题目链接:https://leetcode.com/problems/binary-tree-maximum-path-sum/
代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def maxPathSum(self, root: TreeNode) -> int:
return max(self.dfsMaxSum(root))
def dfsMaxSum(self,root):
if not root:return [-2**31]
left_val=self.dfsMaxSum(root.left)
right_val=self.dfsMaxSum(root.right)
return [root.val + max(left_val[0], right_val[0], 0),
max(left_val + right_val + [root.val + left_val[0] + right_val[0]])]
思路详解
保留每个接点单侧最大值
单侧值=root.val+max(left,right,0)
当前最大值=max(单侧值,root.val+左值+右值)