Maximum path sum Python
- Get link
- X
- Other Apps
PROGRAM TO FIND THE MAXIMUM PATH SUM BETWEEN TWO LEAVES OF A BINARY TREE
INT_MIN = -2**32# A binary tree nodeclass Node: # Constructor to create a new node def __init__(self, data): self.data = data self.left = None self.right = None# Utility function to find maximum sum between any# two leaves. This function calculates two values:# 1) Maximum path sum between two leaves which are stored# in res# 2) The maximum root to leaf path sum which is returned# If one side of root is empty, then it returns INT_MINdef maxPathSumUtil(root, res): # Base Case if root is None: return 0 # Find maximumsum in left and righ subtree. Also # find maximum root to leaf sums in left and righ # subtrees ans store them in ls and rs ls = maxPathSumUtil(root.left, res) rs = maxPathSumUtil(root.right, res) # If both left and right children exist if root.left is not None and root.right is not None: # update result if needed res[0] = max(res[0], ls + rs + root.data) # Return maximum possible value for root being # on one side return max(ls, rs) + root.data # If any of the two children is empty, return # root sum for root being on one side if root.left is None: return rs + root.data else: return ls + root.data# The main function which returns sum of the maximum# sum path betwee ntwo leaves. THis function mainly# uses maxPathSumUtil()def maxPathSum(root): res = [INT_MIN] maxPathSumUtil(root, res) return res[0]# Driver program to test above functionroot = Node(-15)root.left = Node(5)root.right = Node(6)root.left.left = Node(-8)root.left.right = Node(1)root.left.left.left = Node(2)root.left.left.right = Node(6)root.right.left = Node(3)root.right.right = Node(9)root.right.right.right = Node(0)root.right.right.right.left = Node(4)root.right.right.right.right = Node(-1)root.right.right.right.right.left = Node(10)print "Max pathSum of the given binary tree is", maxPathSum(root)
OUTPUT:
Max pathSum of the given binary tree is 27.
- Get link
- X
- Other Apps
Comments
Post a Comment