二叉树中的最大路径和
https://www.lintcode.com/problem/94/?utm_source=sc-cheatsheet-cyc
tree = {2}2tree = {1,2,3}6如下图,最长路径为2-1-3 1 / \ 2 3
Last updated
https://www.lintcode.com/problem/94/?utm_source=sc-cheatsheet-cyc
tree = {2}2tree = {1,2,3}6如下图,最长路径为2-1-3 1 / \ 2 3
Last updated
tree = {1, 2, 3, 4, 9, 6, #, 1, 3, 4, #, 8, 12, #, 14, #, 3, 6}43如下图,最长路径为 14-1-4-2-1-3-6-12```python
from lintcode import (
TreeNode,
)
"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
"""
class Solution:
"""
@param root: The root of binary tree.
@return: An integer
"""
def max_path_sum(self, root: TreeNode) -> int:
# write your code here
if not root:
return 0
self.maxSum = float('-inf')
self.helper(root)
return self.maxSum
def helper(self, root: TreeNode) -> int: #得到含当前root的最大半枝
if not root:
return 0
l = max(self.helper(root.left), 0) #左右半枝是否需要包含
r = max(self.helper(root.right),0)
self.maxSum = max(self.maxSum, l + root.val + r)#当前路线(含root)和已知路径相比,全条非半枝
return max(root.val + l, root.val + r)#含root的最大半枝
```