# Definition for a binary tree node. class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None a = TreeNode(1) b = TreeNode(2) c = TreeNode(3) a.left = b a.right = c
class Solution: def maxPathSum(self, root: TreeNode) -> int: # 界定一个数据储放较大 的相对路径和 self.max_sum = float("-inf") def dfs(root): # 当连接点为空的情况下回到零 if not root:return 0 # 递归左子树和右子树 ,并接受返回值 left = dfs(root.left) right = dfs(root.right) # self.max_sum必定是left或是right的子树的相对路径, # 因而这儿分辨是不是必须历经根节点 self.max_sum = max(self.max_sum,left right root.val) # 这儿不对于根节点,针对根节点的孩子连接点而言 , # 相对路径只有包括孩子连接点中的一个 return max(0,max(left,right) root.val) dfs(root) return self.max_sum A = Solution() print(A.maxPathSum(a))