মান लीजिए हमारे पास एक बाइनरी ट्री है, और हमारे पास दो संख्याएं a और b हैं। हमें उस सबसे निचले नोड का मान ढूंढना है जिसके a और b वंशज हैं। ध्यान रखें कि एक नोड स्वयं का वंशज हो सकता है।
यदि इनपुट निम्नलिखित ट्री जैसा है:

a = 6, b = 2, तो आउटपुट होगा 4
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- solve() मेथड परिभाषित करें जो root, a, b लेता है
- यदि root null है, तो -1 वापस करें
- यदि root का मान a या b है, तो root का मान वापस करें
- left := solve(root के बाएं, a, b)
- right := solve(root के दाएं, a, b)
- यदि left या right -1 नहीं है, तो root का मान वापस करें
- left वापस करें यदि left -1 नहीं है अन्यथा right
- मुख्य मेथड से solve(root) कॉल करें
उदाहरण कोड
class TreeNode:
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def solve(self, root, a, b):
if not root:
return -1
if root.val in (a, b):
return root.val
left = self.solve(root.left, a, b)
right = self.solve(root.right, a, b)
if -1 not in (left, right):
return root.val
return left if left != -1 else right
ob = Solution()
root = TreeNode(3)
root.left = TreeNode(10)
root.right = TreeNode(4)
root.right.left = TreeNode(8)
root.right.right = TreeNode(2)
root.right.left.left = TreeNode(6)
print(ob.solve(root, 6, 2))
इनपुट
root = TreeNode(3) root.left = TreeNode(10) root.right = TreeNode(4) root.right.left = TreeNode(8) root.right.right = TreeNode(2) root.right.left.left = TreeNode(6) 6, 2
आउटपुट
4