Concept Flow - Tree Traversal Preorder Root Left Right
Start at Root Node
Visit Node: Process Data
Traverse Left Subtree
Traverse Right Subtree
Done
Start at the root, visit it, then recursively do the same for left subtree, then right subtree.
function preorder(node) {
if (!node) return;
console.log(node.val);
preorder(node.left);
preorder(node.right);
}| Step | Operation | Node Visited | Left/Right | Tree State (Visual) |
|---|---|---|---|---|
| 1 | Visit root | A | Root | A ├─ B └─ C |
| 2 | Traverse left subtree | B | Left of A | A ├─ B │ ├─ D │ └─ E └─ C |
| 3 | Traverse left subtree | D | Left of B | A ├─ B │ ├─ D │ └─ E └─ C |
| 4 | Left child null | null | Left of D | No change |
| 5 | Right child null | null | Right of D | No change |
| 6 | Traverse right subtree | E | Right of B | A ├─ B │ ├─ D │ └─ E └─ C |
| 7 | Left child null | null | Left of E | No change |
| 8 | Right child null | null | Right of E | No change |
| 9 | Traverse right subtree | C | Right of A | A ├─ B │ ├─ D │ └─ E └─ C └─ F |
| 10 | Left child null | null | Left of C | No change |
| 11 | Traverse right subtree | F | Right of C | A ├─ B │ ├─ D │ └─ E └─ C └─ F |
| 12 | Left child null | null | Left of F | No change |
| 13 | Right child null | null | Right of F | No change |
| 14 | Traversal complete | null | None | Traversal done |
| Variable | Start | After Step 1 | After Step 2 | After Step 3 | After Step 6 | After Step 9 | After Step 11 | Final |
|---|---|---|---|---|---|---|---|---|
| Current Node | A | A | B | D | E | C | F | null |
| Call Stack | [] | [preorder(A)] | [preorder(B), preorder(A)] | [preorder(D), preorder(B), preorder(A)] | [preorder(E), preorder(B), preorder(A)] | [preorder(C), preorder(A)] | [preorder(F), preorder(C), preorder(A)] | [] |
| Output Sequence | [] | [A] | [A, B] | [A, B, D] | [A, B, D, E] | [A, B, D, E, C] | [A, B, D, E, C, F] | [A, B, D, E, C, F] |
Preorder Tree Traversal: - Visit root node first - Recursively traverse left subtree - Recursively traverse right subtree - Uses recursion and call stack - Output order: Root, Left, Right