leetcode 124. 二叉树中的最大路径和

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

路径和 是路径中各节点值的总和。

给你一个二叉树的根节点 root ,返回其 最大路径和 。

示例 1:

输入:root = 1,2,3

输出:6

解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6

示例 2:

输入:root = -10,9,20,null,null,15,7

输出:42

解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42

提示:

树中节点数目范围是 1, 3 \* 104

-1000 <= Node.val <= 1000

题目链接在:leetcode 124

思路,可以通过一个函数,求以 root 为 根节点到 子节点的最大 pathSum, 这样递归遍历就能求出所有的 pathSum

python 复制代码
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def __init__(self):
        self.res = -pow(2, 31)
        self.a = dict() ## 存以 root 为根节点,一直到子节点的最大 pathSum

    ## 计算以 root 节点为根节点 往某一边的最大 pathSum
    @cache
    def getPathSum(self, root):
        if root == None:
            return 0
        #leftPathSum = self.a[root.left] if root.left in self.a else max(self.getPathSum(root.left), 0)
        #rightPathSum = self.a[root.right] if root.right in self.a else max(self.getPathSum(root.right), 0)
        leftPathSum =  max(self.getPathSum(root.left), 0)
        rightPathSum = max(self.getPathSum(root.right), 0)
        self.res = max(self.res, root.val + leftPathSum + rightPathSum)
        #self.a[root] = root.val + max(leftPathSum, rightPathSum)
        return root.val + max(leftPathSum, rightPathSum)


    def maxPathSum(self, root: Optional[TreeNode]) -> int:
        x = self.getPathSum(root)
        return self.res
相关推荐
个 人 练 习 生25 分钟前
数据结构入门:算法复杂度
开发语言·数据结构·经验分享·学习·程序人生·算法
Ricardo-Yang30 分钟前
无人机单目深度估计测试:ZipDepth 与 AerialMetric
人工智能·算法·机器学习·计算机视觉·无人机
Nil20840 分钟前
golang解决单词转换
算法
imaol11 小时前
文件编程--标准IO
linux·运维·算法
青 春 记 忆1 小时前
LeetCode 121. 买卖股票的最佳时机|Python 解法详解
python·算法·leetcode
stolentime1 小时前
AT_agc066_a [AGC066A] Adjacent Difference题解
c++·算法·贪心算法·构造
渣波2 小时前
深度解析:LeetCode 51. N 皇后 —— 回溯算法的巅峰之作
算法
咪饭只吃一小碗2 小时前
# C++ STL 常用容器方法全面总结vector / map / set / unordered_map / unordered_set
算法
daad7772 小时前
802.11 前导码与 STF 深度解析(含检测算法与 5G 对比
人工智能·算法·5g·wifi·802.11·前导码