面试回顾-二叉树回顾总结

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

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。

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

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

在这里插入图片描述

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def maxPathSum(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        # 计算每一个节点左右的贡献值如果选定该节点,就返回左 + 右 + 该节点
        # 每次返回左右最大的一支 + 该节点
        out = []

        def dfs(root):
            if not root:
                return 0
            left = dfs(root.left)
            right = dfs(root.right)
            out.append(max(left + right, left, right,0) + root.val)
            return max(left, right,0) + root.val
        
        dfs(root)
        return max(out)

猜你喜欢

转载自blog.csdn.net/caihuanqia/article/details/112853347
今日推荐