当前位置:   article > 正文

LeetCode 124. 二叉树中的最大路径和(Hard)_leecode 二叉树hard

leecode 二叉树hard

题解

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

思路

在这里插入图片描述
在这里插入图片描述

代码

# 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:
    ### 0103 递归(88 ms,22.2 MB)
    def maxPathSum(self, root: TreeNode) -> int:
        # 初始化最大值为负无穷
        self.maxSum = float('-inf')

        # 定义计算每个节点最大贡献的递归函数
        def maxGain(node):
            # 递归终止条件
            if not node: return 0

            # 递归计算当前节点左、右孩子的最大贡献
            leftGain = max(maxGain(node.left), 0)
            rightGain = max(maxGain(node.right), 0)

            # 更新最大路径的值
            # node.val + leftGain + rightGain表示:当前这棵子树的 总的 最大贡献
            self.maxSum = max(self.maxSum, node.val + leftGain + rightGain)

            # 返回此节点的最大贡献:仅与一个孩子节点有关!
            return node.val + max(leftGain, rightGain)

        # 开始递归
        maxGain(root)

        return self.maxSum
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/968783
推荐阅读
相关标签
  

闽ICP备14008679号