Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @ type L = List[Int]; type O = Option[Int];
- def walk(pre: L, in: L): BinTree = {
- def f(par: O, ps: L, is: L): (BinTree, L, L) = (par, ps, is) match {
- case (_, _, Nil) => (Leaf, ps, Nil)
- case (Some(par), _, i :: is) if par == i => (Leaf, ps, is)
- case (par, p :: ps, is) =>
- val (l, ps1, is1) = f(Some(p), ps, is);
- val (r, ps2, is2) = f(par, ps1, is1);
- (Node(p, l, r), ps2, is2)
- }
- f(None, pre, in)._1
- }
- //defined type L
- //defined type O
- //defined function walk
- //@ walk(List(7,10,4,3,1,2,8,11), List(4,10,3,1,7,11,8,2))
- //res15: BinTree = Node(7,Node(10,Node(4,Leaf,Leaf),Node(3,Leaf,Node(1,Leaf,Leaf))),Node(2,Node(8,Node(11,Leaf,Leaf),Leaf),Leaf))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement