I am trying to find the maximum path sum of a binary tree, which is question 124 on Leetcode. Can someone help me on what does the "return max(left, right, root.val)" do? Where is it used in the "maxPathSum" or "diameterHelper" function? Thank you so much!!
[1]: https://i.stack.imgur.com/liGMD.png
class Solution:
def maxPathSum(self, root):
max_so_far = [root.val]
def diameterHelper(root, max_so_far):
if root.left == None and root.right == None:
print(root.val)
#print(max_so_far)
if root.val > max_so_far[0]:
max_so_far[0] = root.val
# print("222222")
return root.val
left, right = root.val, root.val
if root.left is not None:
left = root.val + diameterHelper(root.left, max_so_far)
#print(left)
if root.right is not None:
right = root.val + diameterHelper(root.right, max_so_far)
#print(max_so_far)
#print(root.val)
cur_max = left + right - root.val
if cur_max > max_so_far[0]:
max_so_far[0] = cur_max
if root.val > max_so_far[0]:
max_so_far[0] = root.val
if left > max_so_far[0]:
max_so_far[0] = left
if right > max_so_far[0]:
max_so_far[0] = right
#print(1)
#print(max_so_far[0])
return max(left, right, root.val)
diameterHelper(root, max_so_far)
return max_so_far[0]