每日一题13-二叉树中的最大路径和
给你一个二叉树的根节点 root ,返回其最大路径和。
本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-hard/xdhfe5/
话不多说,深度优先遍历,递归精髓~
class Solution:
def maxPathSum(self, root: TreeNode) -> int:
res = float("-inf")
def maxSum(root):
nonlocal res
if not root:
return 0
l, r = maxSum(root.left), maxSum(root.right)
res = max(res, max(l, 0) + max(r, 0) + root.val)
return max(0, l, r) + root.val
maxSum(root)
return res