# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param root TreeNode类
# @return int整型
#
class Solution:
def maxPathSum(self, root: TreeNode) -> int:
# write code here
self.ret = float('-inf')
def maxGain(node):
if not node: return 0
# 如果子路径的 maxGain 为负数,那么对 node 来说 maxGain 就是自己本身;
max_left = max(0, maxGain(node.left))
max_right = max(0, maxGain(node.right))
# 记录“经过”node 节点的最大路径
self.ret = max(self.ret, node.val + max_left + max_right)
return node.val + max(max_left, max_right) # 至少要包含自己本身
maxGain(root)
return self.ret