Mental Model
Visit the left side first, then the middle, then the right side to see all parts in order.
Analogy: Like reading a book where you first look at the left page, then the middle page, then the right page in order.
2 / \ 1 3 ↑root
2 / \ 1 3 ↑root
2 / \ [1] 3 ↑curr at 1
1 visited
2
/ \
1 3
↑curr back to 21 -> 2 visited
2
/ \
1 3
↑curr moves right to 31 -> 2 -> 3 visited
2
/ \
1 3
Traversal complete1 -> 2 -> 3
class TreeNode { val: number; left: TreeNode | null; right: TreeNode | null; constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { this.val = val === undefined ? 0 : val; this.left = left === undefined ? null : left; this.right = right === undefined ? null : right; } } function inorderTraversal(root: TreeNode | null): number[] { const result: number[] = []; function traverse(node: TreeNode | null) { if (node === null) return; // base case: no node traverse(node.left); // visit left subtree result.push(node.val); // visit root traverse(node.right); // visit right subtree } traverse(root); return result; } // Driver code const root = new TreeNode(2, new TreeNode(1), new TreeNode(3)); const output = inorderTraversal(root); console.log(output.join(' -> '));
if (node === null) return; // base case: no nodetraverse(node.left); // visit left subtreeresult.push(node.val); // visit roottraverse(node.right); // visit right subtreeif (node === null) return; // base case: no node
if (node === null) return; // base case: no node