资讯专栏INFORMATION COLUMN

leetcode-124-Binary Tree Maximum Path Sum

z2xy / 3242人阅读

摘要:题目描述举例题目分析找从任意节点出发的任意路径的最大长度。每个都有可能是其他路径上的,这种情况要,。每个都有可能作为中心,此时要左侧之前的路径最长长度,左侧之前的路径最长长度,此为中心时候的长度将这个分析单元递归封装,即可实现目标。

题目描述:

Given a binary tree, find the maximum path sum.

For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child

connections. The path must contain at least one node and does not need
to go through the root.

举例:

Given the below binary tree,

   1
  / 
 2   3
Return 6.
题目分析: 找从任意节点出发的任意路径的最大长度。  每个node都有可能是其他路径上的node,这种情况要max(left,right)。如此循环。  每个node都有可能作为中心node,此时要max(左侧之前的路径最长长度,左侧之前的路径最长长度,此node为中心时候的长度)
将这个分析单元递归封装,即可实现目标。
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def dfs(self,node):
        ls = rs = None
        lmv = rmv = 0
        if node.left:
            lmv,ls=self.dfs(node.left)
            lmv=max(lmv,0)
        if node.right:
            rmv,rs=self.dfs(node.right)
            rmv=max(rmv,0)
        # print(lmv,rmv,ls,rs)
        mv=node.val+max(lmv,rmv)
        sv=node.val+lmv+rmv
        # mv=node.val
        trans_list=[elem for elem in [sv,ls,rs] if elem]
        if not trans_list:
            trans_list=[0]
        return mv,max(trans_list)

    def maxPathSum(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if not root:
            return
        mv,smv=self.dfs(root)
        return max(mv,smv)

if __name__=="__main__":
    tn=TreeNode(2)
    tn1=TreeNode(-1)
    tn2=TreeNode(-2)
    tn.left=tn1
    tn.right=tn2

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41490.html

相关文章

  • LeetCode[124] Binary Tree Maximum Path Sum

    摘要:复杂度思路对于每一节点,考虑到这一个节点为止,所能形成的最大值。,是经过这个节点为止的能形成的最大值的一条支路。 Leetcode[124] Binary Tree Maximum Path Sum Given a binary tree, find the maximum path sum. For this problem, a path is defined as any se...

    warmcheng 评论0 收藏0
  • leetcode124. Binary Tree Maximum Path Sum

    摘要:题目要求题目要求从二叉树中找到任意两个节点构成的一条路径,该路径上节点的和为最大。其实在这里我们通过递归的方法可以发现以下几种场景当前节点作为起始节点当前节点不是起始节点首先我们以当前节点作为根节点,找到可能构成的最大路径值。 题目要求 Given a binary tree, find the maximum path sum. For this problem, a path i...

    frank_fun 评论0 收藏0
  • [LeetCode] 124. Binary Tree Maximum Path Sum

    Problem Given a non-empty binary tree, find the maximum path sum. For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child co...

    mdluo 评论0 收藏0
  • [Leetcode-Tree]Binary Tree Maximum Path Sum

    摘要:但是本题的难点在于,使用递归实现,但是前面的第四种情况不能作为递归函数的返回值,所以我们需要定义两个值,代表单边路径的最大值,用于递归用于和回路的较大值。 Binary Tree Maximum Path SumGiven a binary tree, find the maximum path sum. For this problem, a path is defined as a...

    caige 评论0 收藏0
  • [Leetcode] Binary Tree Maximum Path Sum 二叉树最大路径和

    摘要:栈迭代复杂度时间空间递归栈空间对于二叉树思路首先我们分析一下对于指定某个节点为根时,最大的路径和有可能是哪些情况。代码连接父节点的最大路径是一二四这三种情况的最大值当前节点的最大路径是一二三四这四种情况的最大值用当前最大来更新全局最大 Binary Tree Maximum Path Sum Given a binary tree, find the maximum path sum...

    魏宪会 评论0 收藏0

发表评论

0条评论

z2xy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<