在树里面找一条不走回头路的路,使沿途的节点值的和最大。
对于每一个节点,都考虑该节点在内的最大的值,和全局变量进行比较
然后返回该节点在内的左子树或者右子树。
# 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:
self.ans=root.val
def dfs(root):
if root==None:
return 0
a=dfs(root.left)
b=dfs(root.right)
if a<0:
a=0
if b<0:
b=0
c=a+b+root.val
self.ans=max(c,self.ans)
return max(a+root.val,b+root.val)
dfs(root)
return self.ans