Skip to content

Instantly share code, notes, and snippets.

@sbycrosz
Created September 24, 2015 04:16
Show Gist options
  • Save sbycrosz/c091c6b4c99949da00ac to your computer and use it in GitHub Desktop.
Save sbycrosz/c091c6b4c99949da00ac to your computer and use it in GitHub Desktop.
// Implementation of Tree Traversal in Scala
package kata
trait Node {
def postorder: Stream[Node]
def inorder: Stream[Node]
def preorder: Stream[Node]
}
case object Empty extends Node {
override def preorder: Stream[Node] = Stream(this)
override def inorder: Stream[Node] = Stream(this)
override def postorder: Stream[Node] = Stream(this)
}
case class Tree(value: Int, left: Node, right: Node) extends Node {
override def preorder: Stream[Node] =
Stream(this) #::: left.preorder #::: right.preorder
override def inorder: Stream[Node] =
left.inorder #::: Stream(this) #::: right.inorder
override def postorder: Stream[Node] =
left.postorder #::: right.postorder #::: Stream(this.asInstanceOf[Node])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment