FAANGPrep Sprint
Path Sum
Determine if the tree has a root-to-leaf path summing to a target.
Examples
The path 5 -> 4 -> 11 -> 2 sums to 22.
Paths are 1->2 (3) and 1->3 (4). No path sums to 5.
Problem Understanding
Return true when some path that starts at root and ends at a leaf has node values adding up to exactly targetSum. The path must run all the way down: stopping at an inner node does not count, which is what makes this a root-to-leaf check.
A leaf is a node with no children.
Algorithm Strategy (Top-Down State)
We use Pre-order DFS (Top-Down) logic.
Instead of calculating the sum from scratch at every leaf, we subtract the current node's value from the targetSum as we go down.
- Consume Value:
remaining = target - node.val. - Check Leaf: If
nodeis a leaf (no left, no right) ANDremaining == 0, we found a path! Returntrue. - Recurse: Check
dfs(node.left, remaining)ORdfs(node.right, remaining). If either returnstrue, propagate it up. - Base Case: If
nodeisnull, returnfalse.
Interactive Visualization
TARGET 22 · A PATH MUST END AT A LEAF
CALL
Still needed
—
Answer
—
call stack
hasPathSum(5, 22)
Next
targetSum -= 5: 22 - 5 = 17 still needed below
Tree
target
Each node subtracts its value from what is still needed, and the remainder appears under it. A leaf that reaches exactly 0 turns green. Once a path is found, || stops, so the right side of that node is never called.
