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

पायथन में प्रीऑर्डर ट्रैवर्सल से बाइनरी सर्च ट्री का निर्माण करें

मान लीजिए कि हमें एक बाइनरी सर्च ट्री बनाना है जो दिए गए प्रीऑर्डर ट्रैवर्सल से मेल खाता हो। इसलिए यदि प्री-ऑर्डर ट्रैवर्सल [8,5,1,7,10,12] जैसा है, तो आउटपुट [8,5,10,1,7,null,12] होगा, इसलिए ट्री होगा -

पायथन में प्रीऑर्डर ट्रैवर्सल से बाइनरी सर्च ट्री का निर्माण करें

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • रूट:=0 वें प्रीऑर्डर ट्रैवर्सल सूची का नोड
  • स्टैक:=एक स्टैक, और स्टैक में रूट पुश करें
  • प्रीआर्डर सूची के दूसरे तत्व से प्रत्येक तत्व के लिए
    • i :=एक नोड जिसका मान i
    • . है
    • यदि i का मान <स्टैक शीर्ष तत्व के शीर्ष पर है, तो
      • स्टैक टॉप नोड के बाईं ओर:=i
      • i को स्टैक में डालें
    • अन्यथा
      • जबकि स्टैक खाली नहीं है, और स्टैक शीर्ष तत्व मान
      • अंतिम:=स्टैक में सबसे ऊपर
      • स्टैक से पॉप तत्व
    • अंतिम नोड के दाईं ओर:=i
    • i को स्टैक में डालें
  • रिटर्न रूट
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    class Solution(object):
       def bstFromPreorder(self, preorder):
          """
          :type preorder: List[int]
          :rtype: TreeNode
          """
          root = TreeNode(preorder[0])
          stack = [root]
          for i in preorder[1:]:
             i = TreeNode(i)
             if i.val<stack[-1].val:
                stack[-1].left = i
                stack.append(i)
             else:
                while stack and stack[-1].val<i.val:
                   last = stack.pop(-1)
                last.right = i
                stack.append(i)
          return root

    इनपुट

    [8,5,1,7,10,12]

    आउटपुट

    [8,5,10,1,7,null,12]

    1. पायथन में बाइनरी ट्री इनऑर्डर ट्रैवर्सल

      मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें रिकर्सन का उपयोग किए बिना इनऑर्डर ट्रैवर्सल स्कीम का उपयोग करके इस पेड़ को पार करना होगा। तो अगर पेड़ ऐसा है फिर ट्रैवर्सल होगा [2,5,7,10,15,20] इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - दो ऐरे रेस और स्टैक बनाएं, कर्व सेट करें:=रूट एक अनंत

    1. पायथन में एक बाइनरी सर्च ट्री का सबसे कम सामान्य पूर्वज

      मान लीजिए कि हमारे पास एक बाइनरी सर्च ट्री है। हमें दो दिए गए नोड्स के सबसे कम सामान्य पूर्वज नोड्स को खोजना होगा। दो नोड्स p और q का LCA वास्तव में पेड़ में सबसे कम नोड के रूप में होता है जिसमें p और q दोनों डीसेंटेंट होते हैं। तो अगर बाइनरी ट्री [6, 2, 8, 0, 4, 7, 9, नल, नल, 3, 5] जैसा है। पेड़ जै

    1. पाइथन में सॉर्ट किए गए ऐरे को बाइनरी सर्च ट्री में कनवर्ट करें

      मान लीजिए कि हमारे पास एक क्रमबद्ध सरणी ए है। हमें एक ऊंचाई-संतुलित बाइनरी खोज उत्पन्न करनी है। इस समस्या में, एक ऊंचाई-संतुलित बाइनरी ट्री वास्तव में एक बाइनरी ट्री है जिसमें प्रत्येक नोड के दो उपप्रकारों की गहराई कभी भी 1 से अधिक भिन्न नहीं होती है। मान लीजिए कि सरणी [-10, -3, 0, 5, 9 की तरह है। ]