摘要:题目描述举例题目分析找从任意节点出发的任意路径的最大长度。每个都有可能是其他路径上的,这种情况要,。每个都有可能作为中心,此时要左侧之前的路径最长长度,左侧之前的路径最长长度,此为中心时候的长度将这个分析单元递归封装,即可实现目标。
</>复制代码
题目描述:
</>复制代码
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 Given a binary tree, find the maximum path sum. For this problem, a path is defined as any se...
摘要:题目要求题目要求从二叉树中找到任意两个节点构成的一条路径,该路径上节点的和为最大。其实在这里我们通过递归的方法可以发现以下几种场景当前节点作为起始节点当前节点不是起始节点首先我们以当前节点作为根节点,找到可能构成的最大路径值。 题目要求 Given a binary tree, find the maximum path sum. For this problem, a path i...
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...
摘要:但是本题的难点在于,使用递归实现,但是前面的第四种情况不能作为递归函数的返回值,所以我们需要定义两个值,代表单边路径的最大值,用于递归用于和回路的较大值。 Binary Tree Maximum Path SumGiven a binary tree, find the maximum path sum. For this problem, a path is defined as a...
摘要:栈迭代复杂度时间空间递归栈空间对于二叉树思路首先我们分析一下对于指定某个节点为根时,最大的路径和有可能是哪些情况。代码连接父节点的最大路径是一二四这三种情况的最大值当前节点的最大路径是一二三四这四种情况的最大值用当前最大来更新全局最大 Binary Tree Maximum Path Sum Given a binary tree, find the maximum path sum...
阅读 3755·2021-11-16 11:41
阅读 2974·2021-09-23 11:45
阅读 756·2019-08-30 15:44
阅读 647·2019-08-30 13:10
阅读 2024·2019-08-30 12:49
阅读 3605·2019-08-28 17:51
阅读 1573·2019-08-26 12:20
阅读 776·2019-08-23 17:56