It is the largest sum of values from any path in the tree. A path can start and end at any nodes, and must follow parent-child connections.
Click to reveal answer
beginner
Why do we use recursion to find the maximum path sum in a binary tree?
Recursion helps explore all paths from each node down to its children, calculating sums and combining results easily.
Click to reveal answer
intermediate
In the maximum path sum problem, why do we ignore negative sums from child paths?
Because adding a negative sum would reduce the total path sum, so we treat negative sums as zero to maximize the result.
Click to reveal answer
intermediate
What does the helper function return in the maximum path sum algorithm?
It returns the maximum sum of a path starting from the current node and extending down to one child only, to be used by its parent.
Click to reveal answer
intermediate
How do we update the global maximum path sum during recursion?
At each node, we calculate the sum of the node's value plus the maximum sums from left and right children (if positive), then update the global max if this sum is larger.
Click to reveal answer
What kind of path does the maximum path sum consider in a binary tree?
AAny path following parent-child connections, starting and ending at any nodes
BOnly paths from root to leaf
COnly paths from leaf to leaf
DOnly paths that include the root
✗ Incorrect
The maximum path sum can be any path in the tree that follows parent-child links, not necessarily starting at root or ending at leaf.
Why do we treat negative child path sums as zero in the maximum path sum problem?
ABecause negative sums are invalid
BBecause negative sums cause errors
CBecause negative sums are always smaller than zero
DBecause negative sums reduce the total path sum
✗ Incorrect
Ignoring negative sums helps maximize the total path sum by not adding harmful values.
What does the helper function return to its parent in the recursion?
AMaximum path sum starting at current node and extending down one child
BMaximum path sum including both children and current node
CSum of all nodes in the subtree
DMinimum path sum starting at current node
✗ Incorrect
The helper returns the max sum path starting at current node and going down one child, so parent can use it to build bigger paths.
When do we update the global maximum path sum during recursion?
AAfter recursion finishes
BAt each node, after calculating sum of node plus left and right max child sums
COnly at the root node
DOnly at leaf nodes
✗ Incorrect
We update the global max at every node considering the node plus both children to find the best path crossing that node.
What is the time complexity of the maximum path sum algorithm in a binary tree?
AO(log n)
BO(n^2)
CO(n), where n is number of nodes
DO(1)
✗ Incorrect
Each node is visited once in recursion, so time complexity is linear in number of nodes.
Explain how recursion helps find the maximum path sum in a binary tree.
Think about how each node uses results from its children.
You got /5 concepts.
Describe the role of the global variable in the maximum path sum algorithm.
It remembers the best result during recursion.
You got /4 concepts.
Practice
(1/5)
1. What does the "maximum path sum" in a binary tree represent?
easy
A. The sum of values from root to the deepest leaf
B. The largest sum of values along any path between two nodes
C. The maximum value of a single node in the tree
D. The sum of all node values in the tree
Solution
Step 1: Understand the path definition
A path can start and end at any nodes, not necessarily root or leaf.
Step 2: Define maximum path sum
It is the highest sum of node values along any such path in the tree.
Final Answer:
The largest sum of values along any path between two nodes -> Option B
Quick Check:
Maximum path sum = largest sum on any path [OK]
Hint: Remember path can start/end anywhere, not just root or leaf [OK]
Common Mistakes:
Thinking path must start at root
Confusing max node value with max path sum
Summing all nodes instead of a path
2. Which of the following Python function signatures is correct for a recursive helper to find maximum path sum in a binary tree node root?
easy
A. def maxPathSum(root: TreeNode) -> int:
B. def maxPathSum(root: int) -> TreeNode:
C. def maxPathSum(root: TreeNode) -> TreeNode:
D. def maxPathSum(root: int) -> int:
Solution
Step 1: Identify input type
The function takes a TreeNode object representing the root of the tree.
Step 2: Identify return type
The function returns an integer representing the maximum path sum.
Final Answer:
def maxPathSum(root: TreeNode) -> int: -> Option A
Quick Check:
Input=TreeNode, Output=int [OK]
Hint: Input is tree node, output is integer sum [OK]
Common Mistakes:
Using int as input instead of TreeNode
Returning TreeNode instead of int
Mixing input and output types
3. Given the following binary tree and code snippet, what is the output?
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def maxPathSum(root):
max_sum = float('-inf')
def helper(node):
nonlocal max_sum
if not node:
return 0
left = max(helper(node.left), 0)
right = max(helper(node.right), 0)
max_sum = max(max_sum, node.val + left + right)
return node.val + max(left, right)
helper(root)
return max_sum
root = TreeNode(-10, TreeNode(9), TreeNode(20, TreeNode(15), TreeNode(7)))
print(maxPathSum(root))
medium
A. 35
B. 27
C. 42
D. 20
Solution
Step 1: Trace left and right subtree sums
Left subtree max path sum is 9, right subtree max path sum is 20 + 15 + 7 = 42.
Step 2: Calculate max path sum including root
Root (-10) + left (9) + right (20 + 15 + 7) = -10 + 9 + 22 = 21, but max path sum is updated at right subtree as 42.
Step 3: Identify maximum path sum
The maximum path sum is 42, but the path that includes root is less than 42.
Final Answer:
42 -> Option C
Quick Check:
Max path sum = 42 [OK]
Hint: Add max(0, left/right) to avoid negative sums [OK]
Common Mistakes:
Including negative sums from subtrees
Confusing return value with max_sum
Not using nonlocal for max_sum
4. Find the error in the following code snippet for maximum path sum in a binary tree:
def maxPathSum(root):
max_sum = float('-inf')
def helper(node):
if not node:
return 0
left = helper(node.left)
right = helper(node.right)
max_sum = max(max_sum, node.val + left + right)
return node.val + max(left, right)
helper(root)
return max_sum
medium
A. max_sum should be declared as nonlocal inside helper
B. Return statement should be outside helper function
C. Base case should return None instead of 0
D. max_sum should be initialized to 0 instead of -inf
Solution
Step 1: Identify variable scope issue
max_sum is assigned inside helper but declared outside, so Python treats it as local inside helper.
max_sum should be declared as nonlocal inside helper -> Option A
Quick Check:
Use nonlocal to update outer variable [OK]
Hint: Use nonlocal to modify outer variables inside nested functions [OK]
Common Mistakes:
Forgetting nonlocal causes UnboundLocalError
Changing base case return value incorrectly
Initializing max_sum to 0 misses negative sums
5. You want to find the maximum path sum in a binary tree where some nodes have negative values. Which approach correctly handles negative values to find the maximum path sum?
hard
A. Only consider paths starting at root to leaf
B. Add all child sums regardless of sign to current node value
C. Replace negative node values with zero before calculation
D. Ignore negative child sums by taking max(child_sum, 0) before adding to current node
Solution
Step 1: Understand impact of negative values
Negative sums reduce total path sum, so ignoring them improves max sum.
Step 2: Use max(child_sum, 0) to ignore negatives
This ensures only positive contributions add to current node's path sum.
Step 3: Avoid altering original node values
Replacing negatives with zero changes tree data and is incorrect.
Final Answer:
Ignore negative child sums by taking max(child_sum, 0) before adding to current node -> Option D
Quick Check:
Ignore negatives with max(child_sum, 0) [OK]
Hint: Use max(child_sum, 0) to skip negative paths [OK]
Common Mistakes:
Adding negative sums reduces max path sum
Modifying node values instead of sums
Restricting paths to root-leaf only
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.