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

पायथन में दिए गए योग वाले पेयर्स खोजें जैसे कि पेयर एलिमेंट्स अलग-अलग BSTs में हों


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

तो, यदि इनपुट sum = 12 जैसा है

पायथन में दिए गए योग वाले पेयर्स खोजें जैसे कि पेयर एलिमेंट्स अलग-अलग BSTs में हों

तो आउटपुट [(6, 6), (7, 5), (9, 3)] होगा।

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

  • solve() फंक्शन परिभाषित करें। यह trav1, trav2, Sum लेगा।

  • left := 0

  • right := trav2 का आकार - 1

  • res := एक नई सूची

  • जब left < trav1 का आकार और right >= 0, करें:

    • यदि trav1[left] + trav2[right], Sum के समान है, तो:

      • (trav1[left], trav2[right]) को res के अंत में डालें

      • left := left + 1

      • right := right - 1

    • अन्यथा जब (trav1[left] + trav2[right]) < Sum, तो:

      • left := left + 1

    • अन्यथा,

      • right := right - 1

  • res लौटाएं

  • मुख्य विधि से निम्नलिखित करें:

  • trav1 := एक नई सूची, trav2 := एक नई सूची

  • trav1 := tree1 का इनऑर्डर ट्रैवर्सल

  • trav2 := tree2 का इनऑर्डर ट्रैवर्सल

  • solve(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. - C++ में BST में दिए गए योग वाला जोड़ा खोजें

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

  1. संतुलित BST में दिए गए योग वाली जोड़ी खोजें C++ में संतुलित BST में दिए गए योग वाली जोड़ी खोजें C++ में

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

  1. पायथन प्रोग्राम: लिस्ट में एलिमेंट्स का योग ढूंढें पायथन प्रोग्राम: लिस्ट में एलिमेंट्स का योग ढूंढें

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