Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

दिए गए योग के साथ जोड़े खोजें जैसे कि जोड़ी तत्व पायथन में अलग-अलग बीएसटी में हों


मान लीजिए कि हमारे पास दो दिए गए बाइनरी सर्च ट्री हैं और दूसरा योग दिया गया है; हमें दिए गए योग के संबंध में जोड़े खोजने होंगे ताकि प्रत्येक जोड़ी तत्व अलग-अलग बीएसटी में हों।

तो, अगर इनपुट योग =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)]

  1. सी ++ में बीएसटी में दिए गए योग के साथ एक जोड़ी खोजें

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो उस जोड़ी को ढूंढता है जिसका योग बाइनरी सर्च ट्री में दी गई संख्या के बराबर है। हम जोड़े को खोजने के लिए दो अलग-अलग सूचियों में पेड़ों के मूल्यों को संग्रहीत करने जा रहे हैं। आइए समस्या को हल करने के लिए चरणों को देखें। बाइनरी ट्री के लिए एक

  1. C++ में संतुलित BST में दिए गए योग के साथ एक युग्म खोजें

    मान लीजिए कि हमारे पास एक संतुलित बाइनरी सर्च ट्री और एक लक्ष्य योग है, हमें एक ऐसी विधि को परिभाषित करना होगा जो यह जांचती है कि यह योग के साथ एक जोड़ी लक्ष्य योग के बराबर है या नहीं। इस मामले में। हमें यह ध्यान रखना होगा कि बाइनरी सर्च ट्री अपरिवर्तनीय है। तो, अगर इनपुट पसंद है तो आउटपुट होगा

  1. सूची में तत्वों का योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सूची को देखते हुए, हमें दी गई सूची के योग की गणना करने की आवश्यकता है। यहां हमारे पास विचार करने के लिए दो दृष्टिकोण हैं यानी अंतर्निहित फ़ंक्शन का उपयोग करना और ब्रूट-फोर्