二叉树中的最大路径和-Python

方法: dfs,递归

def maxPathSum(root):
    max_sum = -float("inf")     # 存放全局最大值
    def dfs(root):
        nonlocal max_sum        # 可修改上层函数变量
        if not root: return 0
        l = dfs(root.left)      # 遍历左节点,返回子结构最大值
        r = dfs(root.right)     # 遍历右节点,返回子结构最大值
        cur_sum = root.val      # 假设当前值最大
        if (l>0): cur_sum += l  # 大于0,加入最大值中
        if (r>0): cur_sum += r
        max_sum = max(max_sum, cur_sum)     # 存储全局最大值
        return max(l,r) + root.val if max(l,r)>0 else root.val      # 返回当前节点子环节的最大值
    dfs(root)
    return 

 

posted @ 2021-09-08 14:35  今夜无风  阅读(283)  评论(0编辑  收藏  举报