What is the definition of the Maximum Path Sum in a Binary Tree?
It is the largest sum of values obtained by any path in the binary tree. A path can start and end at any node, and must follow parent-child connections.
Click to reveal answer
intermediate
Why do we consider negative values when calculating Maximum Path Sum?
Because nodes can have negative values, and including them might reduce the total sum. We ignore paths with negative sums by choosing zero instead.
Click to reveal answer
intermediate
In the Maximum Path Sum problem, what does the recursive function typically return?
It returns the maximum sum of a path starting from the current node and extending downwards to one child, or zero if all are negative.
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 this sum is greater than the current global max, we update it.
Click to reveal answer
beginner
What is the time complexity of the Maximum Path Sum algorithm in a binary tree?
The time complexity is O(n), where n is the number of nodes, because we visit each node once during the recursion.
Click to reveal answer
What does a path in the Maximum Path Sum problem represent?
AA sequence of nodes connected by parent-child links
BAny random nodes in the tree
COnly leaf nodes
DNodes connected horizontally
✗ Incorrect
A path must follow parent-child connections, not random or horizontal nodes.
If a node's left and right child paths have negative sums, what should the recursion return for that node?
ANegative infinity
BThe node's value only
CThe sum of both children plus node's value
DZero or the node's value, whichever is larger
✗ Incorrect
We ignore negative sums by choosing zero to avoid reducing the path sum.
When do we update the global maximum path sum during recursion?
AAt every node, considering node + left + right sums
BOnly at leaf nodes
COnly at the root node
DAfter recursion finishes
✗ Incorrect
We update at every node by checking the sum of node plus left and right child paths.
What is the base case for the recursion in Maximum Path Sum?
AWhen the node is a leaf, return its value
BWhen the node has two children
CWhen the node is null, return zero
DWhen the node value is negative
✗ Incorrect
For null nodes, we return zero to stop recursion.
What is the overall time complexity of the Maximum Path Sum algorithm?
AO(n^2)
BO(n)
CO(log n)
DO(n log n)
✗ Incorrect
Each node is visited once, so time complexity is O(n).
Explain how the recursive function helps find the Maximum Path Sum in a binary tree.
Think about how each node contributes to the path and how recursion combines results.
You got /4 concepts.
Describe the role of the global variable in the Maximum Path Sum algorithm.
Why do we need to keep track of the best path sum globally?
You got /4 concepts.
Practice
(1/5)
1. What does the term Maximum Path Sum in a binary tree mean?
easy
A. The largest sum of values along any path between two nodes in the tree
B. The sum of all node values in the tree
C. The sum of values from root to the leftmost leaf
D. The smallest sum of values along any path in the tree
Solution
Step 1: Understand the path definition
The path can start and end at any two nodes, not necessarily root or leaf.
Step 2: Identify maximum sum meaning
We look for the path with the highest total sum of node values.
Final Answer:
The largest sum of values along any path between two nodes in the tree -> Option A
Quick Check:
Maximum path sum means highest sum between any two nodes [OK]
Hint: Maximum path sum is any path with highest total node values [OK]
Common Mistakes:
Thinking path must start at root
Confusing maximum path sum with total tree sum
Assuming path must end at leaf
2. Which of the following Go function signatures is correct for a function that calculates maximum path sum in a binary tree node defined as type TreeNode struct { Val int; Left, Right *TreeNode }?
easy
A. func maxPathSum(root *TreeNode) int
B. func maxPathSum(root TreeNode) int
C. func maxPathSum(root *TreeNode) *int
D. func maxPathSum(root *TreeNode) string
Solution
Step 1: Check parameter type
Function should accept pointer to TreeNode to avoid copying the whole tree.
Step 2: Check return type
Maximum path sum is an integer value, so return type should be int.
Final Answer:
func maxPathSum(root *TreeNode) int -> Option A
Quick Check:
Pointer input and int output for max path sum [OK]
Hint: Use pointer receiver and int return for tree max path sum [OK]
Common Mistakes:
Passing TreeNode by value causing copies
Returning pointer instead of int
Returning string instead of int
3. Given the following Go code snippet, what is the printed output?
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func maxPathSum(root *TreeNode) int {
maxSum := -1 << 31
var maxGain func(node *TreeNode) int
maxGain = func(node *TreeNode) int {
if node == nil {
return 0
}
leftGain := max(0, maxGain(node.Left))
rightGain := max(0, maxGain(node.Right))
priceNewPath := node.Val + leftGain + rightGain
if priceNewPath > maxSum {
maxSum = priceNewPath
}
return node.Val + max(leftGain, rightGain)
}
maxGain(root)
return maxSum
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func main() {
root := &TreeNode{Val: -10}
root.Left = &TreeNode{Val: 9}
root.Right = &TreeNode{Val: 20}
root.Right.Left = &TreeNode{Val: 15}
root.Right.Right = &TreeNode{Val: 7}
fmt.Println(maxPathSum(root))
}
medium
A. 27
B. 42
C. 35
D. 20
Solution
Step 1: Trace maxGain for each node
Calculate max gain from left and right subtree ignoring negatives:
- Node 9: maxGain = 9
- Node 15: maxGain = 15
- Node 7: maxGain = 7
- Node 20: maxGain = 20 + max(15,7) = 35
- Root -10: maxGain = -10 + max(9,35) = 25
Check maxSum updates:
- At node 9: maxSum = 9
- At node 15: maxSum = 15
- At node 7: maxSum = 15 (unchanged)
- At node 20: priceNewPath = 20 + 15 + 7 = 42, maxSum = 42
- At root: priceNewPath = -10 + 9 + 35 = 34 (maxSum stays 42)
Step 2: Return maxSum
maxSum is 42 after full traversal.
Final Answer:
42 -> Option B
Quick Check:
Max path sum = 42 [OK]
Hint: Add node value plus max gains from left and right, track max sum [OK]
Common Mistakes:
Not ignoring negative gains
Returning max gain instead of max path sum
Miscomputing path sums including negative nodes
4. The following Go function attempts to compute the maximum path sum in a binary tree but has a bug. What is the bug?
C. It does not ignore negative gains from left or right subtrees
D. It uses incorrect initial value for maxSum
Solution
Step 1: Analyze gain calculation
The function uses leftGain and rightGain directly without ignoring negative values, which can reduce the path sum.
Step 2: Identify fix
To fix, use max(0, leftGain) and max(0, rightGain) to ignore negative gains.
Final Answer:
It does not ignore negative gains from left or right subtrees -> Option C
Quick Check:
Negative gains must be ignored for correct max path sum [OK]
Hint: Always ignore negative subtree sums by max(0, gain) [OK]
Common Mistakes:
Not ignoring negative subtree sums
Wrong initial maxSum value
Returning before traversal completes
5. You want to find the maximum path sum in a binary tree where some nodes have negative values. Which approach correctly handles this scenario?
A) Use a recursive function that returns the maximum gain from each node, ignoring negative gains by taking max(0, gain), and update a global max sum including both left and right gains plus node value.
B) Use a recursive function that sums all node values and returns the total.
C) Use a breadth-first search to find the maximum node value and return it.
D) Use a recursive function that only considers paths from root to leaf nodes.
hard
A. Consider only root-to-leaf paths recursively
B. Sum all node values recursively and return total
C. Find maximum node value using BFS and return it
D. Use recursion with max(0, gain) and update max sum including both children
Solution
Step 1: Understand negative values impact
Negative node values can reduce path sums, so ignoring negative gains is necessary.
Step 2: Choose correct approach
Use recursion with max(0, gain) and update max sum including both children uses recursion with max(0, gain) to ignore negative paths and updates max sum considering both left and right children plus current node, which correctly finds maximum path sum anywhere in the tree.
Final Answer:
Use recursion with max(0, gain) and update max sum including both children -> Option D
Quick Check:
Ignore negative gains and consider all paths for max sum [OK]
Hint: Ignore negative gains and consider all paths recursively [OK]
Common Mistakes:
Summing all nodes ignoring path constraints
Only considering root-to-leaf paths
Returning max node value instead of path sum
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.