मान लीजिए हमारे पास एक मान k और एक बाइनरी सर्च ट्री है, जहां प्रत्येक नोड या तो एक लीफ है या इसमें 2 बच्चे हैं। हमें मान k वाले नोड को खोजना है और उसके सिबलिंग का मान वापस करना है।
इसलिए, यदि इनपुट इस तरह है

k = 4, तो आउटपुट 10 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
एक फ़ंक्शन util() परिभाषित करें। यह root, k, ans लेगा
यदि root का बायाँ और दायाँ दोनों नल नहीं हैं, तो
वापस लौटें
यदि k > root का मान है, तो
यदि root के दाएँ का मान k के समान है, तो
root के बाएँ के मान को ans के अंत में जोड़ें
वापस लौटें
अन्यथा,
util(root का दायाँ, k, ans)
यदि k < root का मान है, तो
यदि root के बाएँ का मान k के समान है, तो
root के दाएँ के मान को ans के अंत में जोड़ें
वापस लौटें
अन्यथा,
util(root का बायाँ, k, ans)
मुख्य विधि से, निम्नलिखित करें −
ans := एक नई सूची
util(root, k, ans)
ans[0] वापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −
उदाहरण
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right def util(root, k, ans): if root.left is None and root.right is None: return if k > root.val: if root.right.val == k: ans.append(root.left.val) return else: util(root.right, k, ans) if k < root.val: if root.left.val == k: ans.append(root.right.val) return else: util(root.left, k, ans) class Solution: def solve(self, root, k): ans = [] util(root, k, ans) return ans[0] root = TreeNode(6) root.left = TreeNode(4) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5) ob1 = Solution() print(ob1.solve(root, 4))
इनपुट
root = TreeNode(6) root.left = TreeNode(4) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5) 4
आउटपुट
10