Concept Flow - Tree Traversal Inorder Left Root Right
Start at root node
Traverse left subtree
Visit current node (root)
Traverse right subtree
End
Inorder traversal visits the left subtree first, then the root node, and finally the right subtree.
class Node: def __init__(self, val): self.val = val self.left = None self.right = None def inorder(root): if root: inorder(root.left) print(root.val, end=' ') inorder(root.right)
| Step | Operation | Node Visited | Action | Tree State (Inorder so far) |
|---|---|---|---|---|
| 1 | Start traversal | A (root) | Go left subtree | |
| 2 | Traverse left subtree | B | Go left subtree | |
| 3 | Traverse left subtree | D | Go left subtree (None) | |
| 4 | Visit node | D | Print D | D |
| 5 | Traverse right subtree | D | Go right subtree (None) | D |
| 6 | Return to parent | B | Print B | D B |
| 7 | Traverse right subtree | B | Go right subtree | D B |
| 8 | Traverse left subtree | E | Go left subtree (None) | D B |
| 9 | Visit node | E | Print E | D B E |
| 10 | Traverse right subtree | E | Go right subtree (None) | D B E |
| 11 | Return to parent | A | Print A | D B E A |
| 12 | Traverse right subtree | A | Go right subtree | D B E A |
| 13 | Traverse left subtree | C | Go left subtree | D B E A |
| 14 | Traverse left subtree | F | Go left subtree (None) | D B E A |
| 15 | Visit node | F | Print F | D B E A F |
| 16 | Traverse right subtree | F | Go right subtree (None) | D B E A F |
| 17 | Return to parent | C | Print C | D B E A F C |
| 18 | Traverse right subtree | C | Go right subtree | D B E A F C |
| 19 | Traverse left subtree | G | Go left subtree (None) | D B E A F C |
| 20 | Visit node | G | Print G | D B E A F C G |
| 21 | Traverse right subtree | G | Go right subtree (None) | D B E A F C G |
| 22 | End traversal | A | Traversal complete | D B E A F C G |
| Variable | Start | After Step 4 | After Step 6 | After Step 9 | After Step 11 | After Step 15 | After Step 17 | After Step 20 | Final |
|---|---|---|---|---|---|---|---|---|---|
| Current Node | A | D | B | E | A | F | C | G | None |
| Inorder Output | D | D B | D B E | D B E A | D B E A F | D B E A F C | D B E A F C G | D B E A F C G |
Inorder Tree Traversal: - Visit left subtree first - Then visit root node - Finally visit right subtree - Prints nodes in ascending order for BST - Uses recursion or stack - Common for sorted output
root?
2
/ \
1 3
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def inorder(root):
if root:
inorder(root.left)
print(root.val, end=' ')
inorder(root.right)
root = Node(2)
root.left = Node(1)
root.right = Node(3)
inorder(root)
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def inorder(root):
inorder(root.left)
print(root.val, end=' ')
inorder(root.right)
root = Node(1)
inorder(root)
if root is None: return fixes it.
5
/ \
3 8
\ \
4 9
Options:
A) 3 5 4 8 9
B) 4 3 5 9 8
C) 3 4 5 8 9
D) 5 3 4 8 9Pass the test and this pattern moves unknown