LeetCode 腾讯50题Python实现之《二叉树中的最大路径》

系统 1342 0

题目

给定一个非空二叉树,返回其最大路径和。

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

示例 1:

输入: [1,2,3]

            
                 1
  / \
 2   3

            
          

输出: 6
示例 2:

输入: [-10,9,20,null,null,15,7]

            
                -10
   / \
  9  20
    /  \
   15   7

            
          

输出: 42

思路

关键是要求出,某一个根节点到某个子节点的最长路径是多少。最后的结果一定是某一个根节点的值加上它左右子树的那个最长路径。
代码如下,

代码

ref:https://leetcode-cn.com/problems/two-sum/solution/di-gui-zhan-sheng-98-python-by-578123043/

            
              class Solution(object):
    def maxPathSum(self, root):
        maxx = [-999999]
#某一个根节点到某个子节点的最长路径
        def maxsum(root):
            if root == None:
                return 0
            else:
                l = maxsum(root.left)
                r = maxsum(root.right) 
                result = max(root.val+max(l, r),0)
                maxx[0] =max(maxx[0] , root.val+l+r)
                return result
        maxsum(root)
        return maxx[0]



            
          

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论