मान लीजिए कि हमारे पास एक मान k और एक बाइनरी सर्च ट्री है, यहाँ प्रत्येक नोड या तो एक पत्ता है या इसमें 2 बच्चे हैं। हमें k मान वाले नोड को खोजना होगा, और उसके भाई-बहन का मान लौटाना होगा।
तो, अगर इनपुट पसंद है
k =4, तो आउटपुट 10 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
उपयोग() फ़ंक्शन को परिभाषित करें। यह जड़ लेगा, k, ans
-
यदि मूल का बायां भाग शून्य नहीं है और जड़ का दायां भाग शून्य नहीं है, तो
-
वापसी
-
-
अगर k> रूट का मान, तो
-
यदि मूल के दायीं ओर का मान k के समान है, तो
-
उत्तर के अंत में रूट के बाईं ओर का मान डालें
-
वापसी
-
-
अन्यथा,
-
उपयोग (रूट का अधिकार, k, ans)
-
-
-
यदि k <मूल का मान है, तो
-
यदि मूल के दायीं ओर का मान k के समान है, तो
-
उत्तर के अंत में रूट के अधिकार का मान डालें
-
वापसी
-
-
अन्यथा,
-
उपयोग (रूट के बाएँ, k, 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