Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.36 KB | None | 0 0
  1. class Solution(object):
  2.     def dfs(self, child, parent, root_object):
  3.         self.max = max(self.max, child.val)
  4.         if child.left != None:
  5.             self.dfs(child.left, child, root_object)
  6.         if child.right != None:
  7.             self.dfs(child.right, child, root_object)
  8.         if child.left == None and child.right == None:
  9.             left_value = parent.left.val if parent.left != None else 0
  10.             right_value = parent.right.val if parent.right != None else 0
  11.             if child == parent.right or parent.right == None:
  12.                 if parent != root_object:
  13.                     self.max = max(self.max, parent.val, parent.val + left_value, parent.val + right_value, parent.val + left_value + right_value)
  14.                     parent.val = max(parent.val, parent.val + left_value, parent.val + right_value)
  15.                     parent.left = None
  16.                     parent.right = None
  17.                 else:
  18.                     parent.val = max(parent.val, parent.val + left_value, parent.val + right_value, parent.val + left_value + right_value)
  19.                     self.max = max(self.max, parent.val)
  20.  
  21.     def maxPathSum(self, root):
  22.         self.max = root.val
  23.         if root.left != None:
  24.             self.dfs(root.left, root, root)
  25.         if root.right != None:
  26.             self.dfs(root.right, root, root)
  27.         return self.max
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement