Browse curriculum

FAANGPrep Sprint

Maximum Depth of Binary Tree

Find the maximum depth (height) of a binary tree.

Examples

Input:root = [3,9,20,null,null,15,7]
Output:3
Explain:

The tree has nodes 3 -> (9, 20). 20 -> (15, 7). The longest path is 3->20->15 (length 3).

Input:root = [1,null,2]
Output:2

Problem Understanding

Return the maximum depth of the binary tree under root: how many nodes lie on the longest downward path from the root to any leaf, counting both the root and the leaf.

Algorithm Strategy (Bottom-Up)

We use Post-order DFS (Bottom-Up) to solve this.

  1. Base Case: If the node is null, its depth is 0.
  2. Recursive Step:
    • Ask the Left Child: "What is your max depth?"
    • Ask the Right Child: "What is your max depth?"
  3. Calculation: My Depth = max(left_depth, right_depth) + 1.

Interactive Visualization

→ N = THE DEPTH A NODE RETURNED

CALL

Stack depth

1

Max depth

—

call stack

maxDepth(3)

 

maxDepth(3)

Next

Ask 3's left child for its depth

Tree

Legend & Complexity

The node whose call is running

Waiting for a child to return its depth

Returned: its depth is under it

Time

O(n)

Space

O(h) call stack

Each node asks its left child, then its right child, for a depth, and returns the larger plus one. A node’s returned depth appears under it only when it returns, so the numbers fill in from the leaves up; an empty child shows the 0 it returns.

Dry Run

Node Left Depth Right Depth Calculation Return Value
9 0 0 max(0,0) + 1 1
15 0 0 max(0,0) + 1 1
7 0 0 max(0,0) + 1 1
20 1 (from 15) 1 (from 7) max(1,1) + 1 2
3 1 (from 9) 2 (from 20) max(1,2) + 1 3

Edge Cases

  • Empty Tree (Root is null): Return 0.
  • Single Node: Return 1.
  • Skewed Tree: Effectively a linked list, depth = N.

Solution

Bottom-up in every language: ask the left side, ask the right side, return the larger + 1.

Maximum Depth of Binary Tree Code
1var maxDepth = function(root) {
2 if (!root) return 0;
3 const left = maxDepth(root.left);
4 const right = maxDepth(root.right);
5 return Math.max(left, right) + 1;
6};