Because the path is from node to node, the nodes of this path will form a tree (for only one node, we see it as a tree here). Note even the start node is negative, the solution is still correct: the real path will replace the maxSum afterwards.
Solution:
# T:O(n) S:O(h)
class Solution:
maxSum = float("-inf")
# @param root, a tree node
# @return an integer
def maxPathSum(self, root):
self.maxPathSumRecu(root)
return self.maxSum
def maxPathSumRecu(self, root):
if root is None:
return 0
left = max(0, self.maxPathSumRecu(root.left))
right = max(0, self.maxPathSumRecu(root.right))
self.maxSum = max(self.maxSum, root.val + left + right)
return root.val + max(left, right)
Run Time: 164 ms
No comments:
Post a Comment