Given a binary tree, find the maximum path sum.
The path may start and end at any node in the tree.
For example:
Given the below binary tree,
Given the below binary tree,
1
/ \
2 3
Return
6.Solution:
# Definition for a binary tree node
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# @param root, a tree node
# @return an integer
def maxPathSum(self, root):
self.maxValue = float("-inf")
self.maxPathSumRec(root)
return self.maxValue
def maxPathSumRec(self, root):
if root == None:
return 0
leftSum = self.maxPathSumRec(root.left)
rightSum = self.maxPathSumRec(root.right)
if leftSum<0 and rightSum<0:
self.maxValue = max(self.maxValue, root.val)
return root.val
if leftSum>0 and rightSum>0:
self.maxValue = max(self.maxValue, root.val+leftSum+rightSum)
maxValueUp = max(leftSum, rightSum) +root.val
self.maxValue = max(self.maxValue, maxValueUp)
return maxValueUp
No comments :
Post a Comment