Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- object Test {
- sealed abstract class Tree[+T] {
- def leafCount: Int
- }
- case class Node[+T](value: T, left: Tree[T], right: Tree[T]) extends Tree[T] {
- def leafCount: Int = (left, right) match {
- case (End, End) => 1
- case _ => left.leafCount + right.leafCount
- }
- }
- case object End extends Tree[Nothing] {
- def leafCount: Int = 0
- }
- object Node {
- def apply[T](value: T): Node[T] = Node(value, End, End)
- }
- def main(args:Array[String]) = {
- println(Node('x', Node('x'), End).leafCount)
- }
Advertisement
Add Comment
Please, Sign In to add comment