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.
void inorder(Node* root) {
if (root == NULL) return;
inorder(root->left);
printf("%d ", root->data);
inorder(root->right);
}| Step | Operation | Node Visited | Left/Right | Tree State |
|---|---|---|---|---|
| 1 | Start at root | 1 | root | 1 / \ 2 3 |
| 2 | Traverse left subtree | 2 | left | 1 / \ 2 3 |
| 3 | Traverse left subtree | 4 | left of 2 | 1 / \ 2 3 / 4 |
| 4 | Traverse left subtree | NULL | left of 4 | No change |
| 5 | Visit node | 4 | left leaf | Output: 4 |
| 6 | Traverse right subtree | NULL | right of 4 | No change |
| 7 | Return to node | 2 | left subtree done | Output: 4 |
| 8 | Visit node | 2 | root of left subtree | Output: 4 2 |
| 9 | Traverse right subtree | 5 | right of 2 | 1 / \ 2 3 / \ 4 5 |
| 10 | Traverse left subtree | NULL | left of 5 | No change |
| 11 | Visit node | 5 | right leaf | Output: 4 2 5 |
| 12 | Traverse right subtree | NULL | right of 5 | No change |
| 13 | Return to root | 1 | left subtree done | Output: 4 2 5 |
| 14 | Visit node | 1 | root | Output: 4 2 5 1 |
| 15 | Traverse right subtree | 3 | right | 1 / \ 2 3 |
| 16 | Traverse left subtree | NULL | left of 3 | No change |
| 17 | Visit node | 3 | right leaf | Output: 4 2 5 1 3 |
| 18 | Traverse right subtree | NULL | right of 3 | No change |
| 19 | End | NULL | all nodes visited | Output: 4 2 5 1 3 |
| Variable | Start | After Step 2 | After Step 7 | After Step 13 | After Step 19 |
|---|---|---|---|---|---|
| current node | 1 (root) | 2 (left child) | 2 (left subtree done) | 1 (left subtree done) | NULL (done) |
| output sequence | empty | empty | 4 | 4 2 5 | 4 2 5 1 3 |
Inorder Tree Traversal: - Visit left subtree first - Then visit root node - Finally visit right subtree Syntax: inorder(node->left); visit(node); inorder(node->right); Outputs nodes in ascending order for BST Uses recursion to traverse all nodes
struct Node?2 / \ 1 3
void inorder(struct Node* root) {
if (root == NULL) return;
inorder(root->left);
printf("%d ", root->data);
inorder(root->right);
}Pass the test and this pattern moves unknown