Maximum Path Sum in Binary Tree in DSA C# - Time & Space Complexity
We want to understand how the time needed to find the maximum path sum in a binary tree grows as the tree gets bigger.
Specifically, how does the number of steps change when the number of nodes increases?
Analyze the time complexity of the following code snippet.
public int MaxPathSum(TreeNode root) {
int maxSum = int.MinValue;
int MaxGain(TreeNode node) {
if (node == null) return 0;
int leftGain = Math.Max(MaxGain(node.left), 0);
int rightGain = Math.Max(MaxGain(node.right), 0);
int priceNewPath = node.val + leftGain + rightGain;
maxSum = Math.Max(maxSum, priceNewPath);
return node.val + Math.Max(leftGain, rightGain);
}
MaxGain(root);
return maxSum;
}
This code finds the maximum sum of values along any path in a binary tree, where a path can start and end at any nodes.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Recursive calls visiting each node once.
- How many times: Each node is visited exactly one time during recursion.
As the number of nodes (n) grows, the function visits each node once, doing a fixed amount of work per node.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 visits |
| 100 | About 100 visits |
| 1000 | About 1000 visits |
Pattern observation: The number of operations grows directly in proportion to the number of nodes.
Time Complexity: O(n)
This means the time to find the maximum path sum grows linearly with the number of nodes in the tree.
[X] Wrong: "The recursion visits nodes multiple times, so the time is more than linear."
[OK] Correct: Each node is visited once, and results are combined on the way back, so no repeated full visits happen.
Understanding this linear time complexity shows you can analyze recursive tree problems efficiently, a key skill in many coding challenges.
"What if the tree was a linked list (all nodes have only one child)? How would the time complexity change?"
Practice
Maximum Path Sum in a binary tree mean?Solution
Step 1: Understand the path definition
A path in a binary tree can start and end at any nodes, not necessarily root or leaf.Step 2: Define maximum path sum
The maximum path sum is the highest sum of node values along any such path.Final Answer:
The largest sum of values along any path between two nodes in the tree -> Option AQuick Check:
Maximum path sum means highest sum on any path [OK]
- Thinking path must start at root
- Confusing sum of all nodes with maximum path sum
- Assuming path must end at leaf
Solution
Step 1: Check method return type and parameters
The method should return an integer and accept a TreeNode parameter.Step 2: Validate C# syntax
Correct syntax is: access modifier + return type + method name + parameters in parentheses.Final Answer:
public int MaxPathSum(TreeNode root) -> Option AQuick Check:
Correct C# method signature syntax [OK]
- Wrong return type placement
- Missing parentheses for parameters
- Incorrect order of return type and parameters
1 / \ 2 3What is the maximum path sum?
Solution
Step 1: Identify all possible paths and their sums
Paths: 2->1->3 = 6, 1->2 = 3, 1->3 = 4, single nodes 1,2,3.Step 2: Find the maximum sum
The path 2->1->3 has sum 2+1+3 = 6, which is the highest.Final Answer:
6 -> Option BQuick Check:
Sum of path 2->1->3 = 6 [OK]
- Only considering root to leaf paths
- Ignoring paths that go through root connecting two children
- Calculating sum of nodes incorrectly
int maxSum = int.MinValue;
int MaxGain(TreeNode node) {
if (node == null) return 0;
int leftGain = Math.Max(MaxGain(node.left), 0);
int rightGain = Math.Max(MaxGain(node.right), 0);
int priceNewPath = node.val + leftGain + rightGain;
maxSum = Math.Max(maxSum, priceNewPath);
return node.val + Math.Max(leftGain, rightGain);
}What is the purpose of
Math.Max(MaxGain(node.left), 0)?Solution
Step 1: Understand MaxGain return value
MaxGain returns max path sum from subtree or 0 if negative.Step 2: Purpose of Math.Max with 0
This ensures negative sums are ignored, so path sum doesn't decrease.Final Answer:
To ignore negative path sums from left subtree -> Option DQuick Check:
Negative sums replaced by zero to avoid lowering total [OK]
- Thinking it always adds left subtree sum
- Confusing maxSum update with this line
- Assuming it resets maxSum variable
-10
/ \
9 20
/ \
15 7
What is the maximum path sum in this tree?Solution
Step 1: Calculate path sums including left and right children
Possible max path: 15 + 20 + 7 = 42, or 9 alone, or -10 + 9, etc.Step 2: Identify maximum path sum
The path 15->20->7 has sum 42, which is the highest possible.Final Answer:
35 -> Option CQuick Check:
Sum of 15 + 20 + 7 = 42 but max path includes -10 + 20 + 15 + 7 = 32, max path is 35 including 9 + 20 + 15 + 7
- Including negative root value in max path
- Only considering root-to-leaf paths
- Ignoring paths that skip root
Ready to prove it?
Pass the test and this pattern moves unknown
