मान लीजिए कि हमारे पास दो दिए गए बाइनरी सर्च ट्री हैं और दूसरा योग दिया गया है; हमें दिए गए योग के संबंध में जोड़े खोजने होंगे ताकि प्रत्येक जोड़ी तत्व अलग-अलग बीएसटी में हों।
तो, अगर इनपुट योग =12 जैसा है
तो आउटपुट [(6, 6), (7, 5), (9, 3)]
. होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन को हल करें () परिभाषित करें। इसमें trav1, trav2, योग लगेगा
-
बायां :=0
-
दाएं:=ट्रैव2 का आकार - 1
-
रेस :=एक नई सूची
-
जबकि बाएँ
=0, करें -
यदि trav1[बाएं] + trav2[दाएं] योग के समान है, तो
-
रेस के अंत में (trav1[बाएं],trav2[दाएं]) डालें
-
बाएँ :=बाएँ + 1
-
दाएँ:=दाएँ - 1
-
-
अन्यथा जब (trav1[बाएं] + trav2[दाएं]) <योग, तब
-
बाएँ :=बाएँ + 1
-
-
अन्यथा,
-
दाएँ:=दाएँ - 1
-
-
-
रिटर्न रेस
-
मुख्य विधि से निम्न कार्य करें -
-
trav1 :=एक नई सूची, trav2 :=एक नई सूची
-
trav1 :=ट्री1 के ट्रैवर्सल क्रम में
-
trav2 :=ट्री2 के ट्रैवर्सल क्रम में
-
रिटर्न सॉल्व (trav1, trav2, Sum)
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class ListNode: def __init__(self, data): self.data = data self.left = None self.right = None def insert(root, key): if root == None: return ListNode(key) if root.data > key: root.left = insert(root.left, key) else: root.right = insert(root.right, key) return root def storeInorder(ptr, traversal): if ptr == None: return storeInorder(ptr.left, traversal) traversal.append(ptr.data) storeInorder(ptr.right, traversal) def solve(trav1, trav2, Sum): left = 0 right = len(trav2) - 1 res = [] while left < len(trav1) and right >= 0: if trav1[left] + trav2[right] == Sum: res.append((trav1[left],trav2[right])) left += 1 right -= 1 elif trav1[left] + trav2[right] < Sum: left += 1 else: right -= 1 return res def get_pair_sum(root1, root2, Sum): trav1 = [] trav2 = [] storeInorder(root1, trav1) storeInorder(root2, trav2) return solve(trav1, trav2, Sum) root1 = None for element in [9,11,4,7,2,6,15,14]: root1 = insert(root1, element) root2 = None for element in [6,19,3,2,4,5]: root2 = insert(root2, element) Sum = 12 print(get_pair_sum(root1, root2, Sum))
इनपुट
[9,11,4,7,2,6,15,14], [6,19,3,2,4,5], 12
आउटपुट
[(6, 6), (7, 5), (9, 3)]