124. Binary Tree Maximum Path Sum
Hard
Given a non-empty binary tree, find the maximum path sum.
For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path must contain at least one nodeand does not need to go through the root.
Example 1:
Input: [1,2,3] 1 / \ 2 3 Output: 6
Example 2:
Input: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7 Output: 42
笔记:
思路参考https://www.cnblogs.com/grandyang/p/4280120.html
重复计算的数据定义一个变量来保存,用空间换时间提高效率
class Solution:
def maxPathSum(self, root: TreeNode) -> int:
rlt = float('-inf')
def helper(node):
nonlocal rlt
if node is None:
return 0
left = helper(node.left)
right = helper(node.right)
max_path = max(node.val, node.val + left, node.val + right)
tree_sum = node.val + left + right
rlt = max(rlt, max_path, tree_sum)
return max_path
helper(root)
return rlt