Binary Tree Maximum Path Sum - Problem

A path in a binary tree is a sequence of nodes where each pair of adjacent nodes in the sequence has an edge connecting them. A node can only appear in the sequence at most once. Note that the path does not need to pass through the root.

The path sum of a path is the sum of the node's values in the path.

Given the root of a binary tree, return the maximum path sum of any non-empty path.

Input & Output

Example 1 — Basic Tree with Positive Values
$ Input: root = [1,2,3]
Output: 6
💡 Note: The optimal path is 2 → 1 → 3 with sum = 2 + 1 + 3 = 6
Example 2 — Tree with Negative Values
$ Input: root = [-10,9,20,null,null,15,7]
Output: 42
💡 Note: The optimal path is 15 → 20 → 7 with sum = 15 + 20 + 7 = 42
Example 3 — Single Node
$ Input: root = [-3]
Output: -3
💡 Note: The tree has only one node, so the maximum path sum is -3

Constraints

  • The number of nodes in the tree is in the range [1, 3 × 104]
  • -1000 ≤ Node.val ≤ 1000

Visualization

Tap to expand
Binary Tree Maximum Path Sum INPUT Binary Tree Structure 1 2 3 Input Array: root = [1, 2, 3] Path: sequence of connected nodes (each node once) Does not need to pass root ALGORITHM STEPS 1 DFS Traversal Visit each node recursively 2 Calculate Gain Max gain from left/right child 3 Update Global Max node + leftGain + rightGain 4 Return Path Sum node + max(left, right) DFS Calculation: 1 2 3 2 + 1 + 3 = 6 FINAL RESULT Maximum Path Found 1 2 3 Path: 2 --> 1 --> 3 Output: 6 [OK] Maximum path sum found Key Insight: At each node, we calculate TWO values: (1) the max path sum that can be extended to parent (single branch), and (2) the max path sum using this node as the "turning point" (both branches). We update global max with option 2, but return option 1 for the parent's calculation. Negative gains are treated as 0 (don't include). TutorialsPoint - Binary Tree Maximum Path Sum | DFS with Global Maximum
Asked in
Google 25 Amazon 18 Microsoft 15 Facebook 12
68.5K Views
High Frequency
~25 min Avg. Time
2.8K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen