Skip to content

Instantly share code, notes, and snippets.

@sumew
Created April 14, 2020 03:46
Show Gist options
  • Save sumew/88bdaadddd5ebb89a0eb8ccacd883ee2 to your computer and use it in GitHub Desktop.
Save sumew/88bdaadddd5ebb89a0eb8ccacd883ee2 to your computer and use it in GitHub Desktop.
def inOrder[T,S](tree: Tree[T], f: T => S): Queue[S] = {
def loop(g: Tree[T], output: Queue[S]): Queue[S] = g match {
case Tree(v,l::ls) => ls.foldLeft(loop(l,output).enqueue(f(v))){case (acc,n) => loop(n,acc)}
case Tree(v,Nil) => output.enqueue(f(v))
}
loop(tree, Queue.empty)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment