I\'m looking at an interview book and the question is:
You have two very large binary trees:
T1
, with millions of nodes, andT2
Important assumption is that the tree has unique keys.
Now, note that preorder-traversal-string
and inorder-traversal-string
uniquely identify a binary tree.
Scatch of the proof:
Let T
be a tree.
preorder-traversal-string(T)
is the root.inorder-traversal-string(T)
- everything on left of that element is your left subtree L
, let's call this substring inorder-traversal-string(L)
. Everything on right is your right subtree R
.Now, let's focus on the left subtree L
.
preorder-traversal-string(L)
ends in preorder-traversal-string(T)
.inorder-traversal-string(L)
and preorder-traversal-string(L)
have the same length. This gives as the place where to cut.inorder-traversal-string(L)
and preorder-traversal-string(L)
so you can repeat the procedure till the end.Following those steps (inefficient but it is just for the proof) for all subtrees you will uniquely build the tree.
Thus, all subtrees of T1
are described uniquely by corresponding inorder-traversal-string
and preorder-traversal-string
.