📖 Scenario: Imagine you have a simple family tree where each person has a number representing their age. You want to find if there is a path from the oldest ancestor (root) down to a youngest family member (leaf) where the total of all ages equals a specific number.
🎯 Goal: You will build a small binary tree with exact ages, set a target sum, write a function to check if any root-to-leaf path sums to that target, and print the result.
📋 What You'll Learn
Create a binary tree with exact node values
Set a target sum value
Write a function to check root-to-leaf path sums
Print True or False based on the check
💡 Why This Matters
🌍 Real World
Checking path sums in trees is useful in decision-making systems, where each node represents a choice with a cost or value, and you want to find a sequence of choices meeting a target.
💼 Career
Understanding tree traversal and path sum problems is common in coding interviews and helps build problem-solving skills for software engineering roles.
Progress0 / 4 steps
1
Create the binary tree nodes
Create a class called TreeNode with an __init__ method that takes val, left, and right parameters. Then create the following nodes exactly: root with value 5, root.left with value 4, root.right with value 8, root.left.left with value 11, root.left.left.left with value 7, root.left.left.right with value 2, root.right.left with value 13, root.right.right with value 4, and root.right.right.right with value 1.
DSA Python
Hint
Start by defining the TreeNode class with val, left, and right. Then create each node exactly as described, linking children properly.
2
Set the target sum
Create a variable called target_sum and set it to the integer 22.
DSA Python
Hint
Just create a variable named target_sum and assign it the value 22.
3
Write the path sum checking function
Write a function called has_path_sum that takes two parameters: node and current_sum. It should return True if there is a root-to-leaf path starting at node where the sum of node values equals target_sum. Use recursion to check left and right children, adding the current node's value to current_sum. If node is None, return False. If node is a leaf (no children), check if current_sum + node.val == target_sum. Return True if found, else False. Call this function initially with root and 0.
DSA Python
Hint
Use recursion to add the current node's value to current_sum. If the node is a leaf, check if the sum matches target_sum. Otherwise, check left and right children.
4
Print the result of path sum check
Print the result of calling has_path_sum with root and 0.
DSA Python
Hint
Call has_path_sum with root and 0, then print the result.
Practice
(1/5)
1. What does the "Path Sum Root to Leaf" problem ask you to find in a binary tree?
easy
A. If there exists a root-to-leaf path with a sum equal to a given target
B. The maximum depth of the binary tree
C. The total number of leaf nodes in the tree
D. The sum of all node values in the tree
Solution
Step 1: Understand the problem statement
The problem asks if there is any path from the root node down to any leaf node where the sum of the node values equals a given target sum.
Step 2: Identify what is being checked
We check paths that start at the root and end at leaves, summing node values along the way, to see if any path matches the target sum.
Final Answer:
If such a path exists, return true; otherwise, false -> Option A
Quick Check:
Path sum check = existence of root-to-leaf path with target sum [OK]
Hint: Look for root-to-leaf paths matching target sum [OK]
Common Mistakes:
Checking sum for any path, not just root-to-leaf
Confusing leaf nodes with internal nodes
Summing all nodes instead of a single path
2. Which of the following is the correct Python function signature to solve the Path Sum Root to Leaf problem using recursion?
easy
A. def has_path_sum(root: TreeNode, target_sum: int): return str
B. def has_path_sum(root, target_sum): return int
C. def has_path_sum(target_sum: int, root: TreeNode) -> bool:
D. def has_path_sum(root: TreeNode, target_sum: int) -> bool:
Solution
Step 1: Identify correct parameter order and types
The function should take the root node first, then the target sum, matching the problem context.
Step 2: Confirm return type is boolean
The function returns True or False depending on whether the path exists, so return type is bool.
Final Answer:
def has_path_sum(root: TreeNode, target_sum: int) -> bool: -> Option D
The path 5->4->11->2 sums to 22, so function returns True.
Final Answer:
True -> Option A
Quick Check:
Path sum 22 exists = True [OK]
Hint: Check all root-to-leaf sums for target quickly [OK]
Common Mistakes:
Not subtracting node values from target_sum
Ignoring leaf node condition
Returning None instead of boolean
4. Find the bug in this code snippet for checking path sum:
def has_path_sum(root, target_sum):
if root is None:
return False
if root.left is None and root.right is None:
return root.val == target_sum
return has_path_sum(root.left, target_sum) or has_path_sum(root.right, target_sum)
medium
A. The base case should return True when root is None
B. The leaf node check is incorrect
C. The target_sum is not reduced by root.val in recursive calls
D. The function should return an integer sum
Solution
Step 1: Analyze recursive calls and target_sum usage
The function calls itself with the same target_sum, not subtracting root.val, so sums are not updated correctly.
Each recursive call should reduce target_sum by root.val to track remaining sum needed.
Final Answer:
target_sum not reduced by root.val in recursion -> Option C
Quick Check:
Subtract node value from target_sum each step [OK]
Hint: Always subtract current node value from target_sum [OK]
Common Mistakes:
Forgetting to update target_sum in recursion
Returning wrong base case values
Confusing leaf node condition
5. Given a binary tree where node values can be negative, zero, or positive, which modification is necessary to correctly solve the Path Sum Root to Leaf problem?
hard
A. Track the current path sum explicitly instead of subtracting from target
B. No modification needed; the standard approach works for all values
C. Use a breadth-first search instead of recursion
D. Ignore paths with negative sums
Solution
Step 1: Evaluate the standard subtraction approach with negatives
The standard recursive method subtracts root.val from target_sum in recursive calls. This works correctly even with negative values because target_sum - root.val adjusts the remaining sum appropriately regardless of the sign.
Step 2: Confirm no changes needed
No modification is necessary; the algorithm handles negative, zero, and positive values correctly without issues.
Final Answer:
No modification needed; the standard approach works for all values -> Option B
Quick Check:
Standard subtraction handles negatives [OK]
Hint: Standard recursion works with negative node values [OK]
Common Mistakes:
Believing subtraction fails with negatives
Using BFS unnecessarily for path sum
Incorrectly pruning paths based on signs
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.