Hard
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.
Example 1:
Input: root = [1,2,3]
Output: 6
Explanation: The optimal path is 2 -> 1 -> 3 with a path sum of 2 + 1 + 3 = 6.
Example 2:
Input: root = [-10,9,20,null,null,15,7]
Output: 42
Explanation: The optimal path is 15 -> 20 -> 7 with a path sum of 15 + 20 + 7 = 42.
Constraints:
[1, 3 * 104]
.-1000 <= Node.val <= 1000
To solve the “Binary Tree Maximum Path Sum” problem in Python with a Solution
class, we’ll use a recursive approach. Below are the steps:
Create a Solution
class: Define a class named Solution
to encapsulate our solution methods.
Create a maxPathSum
method: This method takes the root node of the binary tree as input and returns the maximum path sum.
maxSumPath
to compute the maximum path sum rooted at the current node.
Initialize a variable to store the maximum path sum: Initialize a global variable maxSum
to store the maximum path sum.
Call the helper method: Call the maxSumPath
method with the root node.
maxSum
.Here’s the Python implementation:
class Solution:
def __init__(self):
self.max_sum = float('-inf')
def maxPathSum(self, root: TreeNode) -> int:
self.helper(root)
return self.max_sum
def helper(self, root):
if not root:
return 0
left = max(0, self.helper(root.left))
right = max(0, self.helper(root.right))
current = root.val + left + right
self.max_sum = max(self.max_sum, current)
return root.val + max(left, right)
This implementation follows the steps outlined above and efficiently computes the maximum path sum in a binary tree in Python.