题目
题解
class Solution:
def __init__(self):
# 用于存储最大的路径和
self.maxSum = float("-inf")
def maxPathSum(root):
def maxGain(node):
"""用于计算一个节点的最大贡献值"""
if not node:
return 0
# 只有当节点的贡献值大于0,该节点才会被加入路径
left = max(0, maxGain(node.left))
right = max(0, maxGain(node.right))
# 节点的最大路径和
newpathSum = node.val + left + right
# 更新最大路径和
self.maxSum = max(self.maxSum, newpathSum)
# 返回该节点的最大贡献值(因为不能左右两边都走,所以max(left, right))
return max(left, right) + node.val
maxGain(root)
return self.maxSum