DSA & CS / 5. TREES & BST
Trees & Binary Search Trees
Hierarchical data — recursive thinking at its purest
EXPLANATION
A tree is a connected acyclic graph. Binary tree: each node has at most 2 children (left, right). Tree traversals — memorize all four: • Inorder (Left → Root → Right) → gives sorted order for BST • Preorder (Root → Left → Right) → useful for copying/serializing tree • Postorder (Left → Right → Root) → useful for deleting/evaluating tree • Level-order (BFS) → process level by level BST property: left subtree < node < right subtree. This gives O(log n) search, insert, delete for balanced trees. O(n) worst case for skewed trees. The key insight for tree problems: most tree problems have a recursive structure. Ask: "what does this function return for a leaf node? What does it return for a null node? Can I combine results from left and right subtree?" DFS on trees is almost always recursive. The base case is always: if not node: return something.
DIAGRAM
Binary Tree:
4
/ \
2 6
/ \ / \
1 3 5 7
Inorder [L→N→R]: 1 2 3 4 5 6 7 ← sorted!
Preorder [N→L→R]: 4 2 1 3 6 5 7
Postorder[L→R→N]: 1 3 2 5 7 6 4
Level BFS: 4 | 2 6 | 1 3 5 7
BST search for 5:
root=4, 5>4 → go right
node=6, 5<6 → go left
node=5 → found ✓CODE