思路和之前的同值路径和很像
class Solution(object):
def maxPathSum(self, root):
"""
:type root: TreeNode
:rtype: int
"""
self.ans=root.val
def rec(root):
if not root:
return 0
#左儿子的路径和是负数的话则不添加
l_sum=max(0,rec(root.left))
#右儿子的路径和是负数的话则不添加
r_sum=max(0,rec(root.right))
#当前最大路径和是左儿子的路径和与根节点与右儿子路径和之和
self.ans=max(self.ans,root.val+l_sum+r_sum)
#当前节点返回的是左儿子路径和与右儿子路径和的最大值并加上根节点值,作为当前节点的子路径和
return max(l_sum,r_sum)+root.val
rec(root)
return self.ans