22 lines
839 B
Plaintext
22 lines
839 B
Plaintext
Constructing a tree from two traversals
|
|
=======================================
|
|
|
|
inorder : [4, 2, 5, 1, 6, 3]
|
|
preorder : [1, 2, 4, 5, 3, 6]
|
|
|
|
from inorder + preorder, one line per recursive call:
|
|
root 1 inorder slice [0..5] left size 3, right size 2
|
|
root 2 inorder slice [0..2] left size 1, right size 1
|
|
root 4 inorder slice [0..0] left size 0, right size 0
|
|
root 5 inorder slice [2..2] left size 0, right size 0
|
|
root 3 inorder slice [4..5] left size 1, right size 0
|
|
root 6 inorder slice [4..4] left size 0, right size 0
|
|
result : 1(2(4,5),3(6,-))
|
|
postorder of the result: [4, 5, 2, 6, 3, 1]
|
|
|
|
from inorder + postorder the same tree comes back: 1(2(4,5),3(6,-))
|
|
|
|
two different trees with the same preorder AND postorder:
|
|
1(2,-) preorder [1, 2] postorder [2, 1]
|
|
1(-,2) preorder [1, 2] postorder [2, 1]
|