Construct Binary Tree from Inorder and Postorder

Root pick from postorder + inorder range partitioning (right first)

Read Here
Step0/26
Created0
Postorder Ptr-1
Back To Trees List

Python Code

7 nonlocal post_ptr
8 if left > right:
9 return None
10
root_val = postorder[post_ptr]
12 post_ptr -= 1
......
15
16 root.right = build(mid + 1, right)
17 root.left = build(left, mid - 1)
18 return root
19
Current Line (11): Pick root from postorder

Tree Structure

3791520
Operation:Pick Root

Build Progress

Post Ptr

-1

Inorder Pivot

-

Traversal Inputs

Inorder: [9, 3, 15, 20, 7]

Postorder: [9, 15, 7, 20, 3]

Range: [0..-1]

Created Order

Created nodes appear here...
Step 1: Pick Root

Build Stack

Stack is empty. Click Next to begin!

Step Explanation

Line 11: pick_root

Pick 3 from postorder and split inorder at index 1

  • > Meaning: Current postorder pointer gives the root value.
  • > Why: Postorder ends with Root, so scanning backward yields root first.
  • > Next: Create root and split inorder range.
  • > Progress snapshot: 0/26 steps, 0 nodes created.
Unvisited
Left
Current
Right
Done