Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to find the largest sum of the path between two nodes in a binary tree in Python
Suppose we have a binary tree; we have to find the maximum sum of any path between any two nodes.
So, if the input is like

then the output will be 62 as the nodes are [12,13,14,16,7].
To solve this, we will follow these steps −
Define a function utils() . This will take root
-
if root null, then
return 0
l := utils(left of root)
r := utils(right of root)
max_single := maximum of (max of l and r) + value of root) and value of root
max_top := maximum of max_single and l + r + value of root
res := maximum of res and max_top
return max_single
From the main method, do the following −
-
if root is null, then
return 0
res := infinity
utils(root)
return res
Let us see the following implementation to get better understanding −
Example
class TreeNode:
def __init__(self, value):
self.val = value
self.left = None
self.right = None
class Solution:
def solve(self, root):
if root is None:
return 0
self.res = float("-inf")
self.utils(root)
return self.res
def utils(self, root):
if root is None:
return 0
l = self.utils(root.left)
r = self.utils(root.right)
max_single = max(max(l, r) + root.val, root.val)
max_top = max(max_single, l + r + root.val)
self.res = max(self.res, max_top)
return max_single
ob = Solution()
root = TreeNode(13)
root.left = TreeNode(12)
root.right = TreeNode(14)
root.right.left = TreeNode(16)
root.right.right = TreeNode(22)
root.right.left.left = TreeNode(4)
root.right.left.right = TreeNode(7)
print(ob.solve(root))
Input
root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7)
Output
62
Advertisements