您的位置:首页 > 编程语言 > Python开发

[LeetCode]题解(python):124-Binary Tree Maximum Path Sum

2016-03-22 14:14 966 查看
[b]题目来源:[/b]

  https://leetcode.com/problems/binary-tree-maximum-path-sum/

[b]题意分析:[/b]

  给定一棵树,找出一个数值最大的路径,起点可以是任意节点或者叶子。

[b]题目思路:[/b]

  我们可以先找路径的最大mr,ml,那么最大值是max(solve(root),solve(left),solve(right), max(mr + root.val + ml, root.val))。

[b]代码(python):[/b]

  

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
def maxPathSum(self, root):
"""
:type root: TreeNode
:rtype: int
"""
def solve(root):
if root == None:
return 0
l,r = 0,0
if root.left:
l = max(solve(root.left),0)
if root.right:
r = max(solve(root.right),0)

ans1 = max(l,r) + root.val
ans2 = l + r + root.val
Solution.maxsum = max(Solution.maxsum,max(ans1,ans2))
print(Solution.maxsum)
return Solution.maxsum
if root == None:
return 0
Solution.maxsum = root.val
solve(root)
return Solution.maxsum


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: