Tree traversals
Visiting every node: copying, serializing, evaluating, or validating a binary search tree with inorder traversal.
High interview relevanceRoadmap: Intermediate
| Time | O(n) |
|---|---|
| Space | O(h) for depth-first orders |
Why it costs this much
Every node is visited exactly once, and the recursion stack holds only one root-to-node path.
Code
def inorder(node, out):
if node:
inorder(node.left, out)
out.append(node.val) # each node is appended once: O(n)
inorder(node.right, out) # stack depth never exceeds the height hCommon pitfalls
Space is O(h), which is O(n) on a skewed tree. Level-order traversal uses O(w) space for the widest level w.
Operation by operation
| Operation | Best | Average | Worst | Space |
|---|---|---|---|---|
| Tree traversal (in-order, pre-order, post-order, level-order) | O(n) | O(n) | O(n) | O(h) stack; O(w) for level-order |
Tree traversal (in-order, pre-order, post-order, level-order). Visits each node once. h is height, w is the widest level. A skewed tree has h = n, so the recursion stack is O(n).