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

पायथन में स्टैक का उपयोग करके दिए गए पोस्टऑर्डर ट्रैवर्सल से एक बीएसटी का निर्माण करें


मान लीजिए कि हमारे पास बाइनरी सर्च ट्री का एक पोस्टऑर्डर ट्रैवर्सल है; हमें इससे बाइनरी सर्च ट्री ढूंढ़ना होगा।

इसलिए, यदि इनपुट [6, 12, 10, 55, 45, 15] जैसा है, तो आउटपुट होगा

पायथन में स्टैक का उपयोग करके दिए गए पोस्टऑर्डर ट्रैवर्सल से एक बीएसटी का निर्माण करें

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

  • फ़ंक्शन को हल करें () परिभाषित करें। यह पोस्टऑर्डर लेगा

  • n :=पोस्टऑर्डर का आकार

  • रूट:=पोस्टऑर्डर के अंतिम तत्व के साथ एक नया ट्री नोड बनाएं

  • stk :=एक स्टैक

  • stk में रूट डालें

  • मैं :=n - 2

  • जबकि मैं>=0, करते हैं

    • x :=मान पोस्टऑर्डर के साथ एक नया नोड बनाएं[i]

    • जबकि stk खाली नहीं है और postorder[i]

      • अस्थायी :=stk के ऊपर

      • stk से शीर्ष तत्व हटाएं

    • अगर अस्थायी शून्य नहीं है, तो

      • अस्थायी.बाएं:=x

    • अन्यथा,

      • stk शीर्ष तत्व के दाईं ओर :=x

    • stk में x डालें

    • मैं :=मैं - 1

  • वापसी जड़

  • मुख्य विधि से निम्न कार्य करें -

  • वापसी हल (पोस्टऑर्डर)

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

class TreeNode:
   def __init__(self, data = 0):
      self.val = data
      self.left = None
      self.right = None
def solve(postorder):
   n = len(postorder)
   root = TreeNode(postorder[n - 1])
   stk = []
   stk.append(root)
   i = n - 2
   while ( i >= 0):
      x = TreeNode(postorder[i])
      temp = None
      while (len(stk) > 0 and postorder[i] < stk[-1].val) :
         temp = stk[-1]
         stk.pop()
      if (temp != None):
         temp.left = x
      else:
         stk[-1].right = x
      stk.append(x)
      i = i - 1
   return root
def build_tree(postorder):
   return solve(postorder)
def inord( node):
   if node:
      inord(node.left)
      print( node.val, end = " ")
      inord(node.right)
postorder = [6, 12, 10, 55, 45, 15]
root = build_tree(postorder)
print( "Inorder traversal:", end = " ")
inord(root)

इनपुट

[6, 12, 10, 55, 45, 15]

आउटपुट

6 10 12 15 45 55

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

    मान लीजिए कि हमारे पास बाइनरी ट्री का इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल सीक्वेंस है। हमें इन अनुक्रमों से वृक्ष उत्पन्न करना है। तो अगर पोस्टऑर्डर और इनऑर्डर अनुक्रम [9,15,7,20,3] और [9,3,15,20,7] हैं, तो पेड़ होगा - आइए चरणों को देखें - मान लीजिए कि विधि को प्रीऑर्डर और इनऑर्डर सूचियों के साथ बिल

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

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

  1. पायथन में स्टैक और क्यू के रूप में सूची का उपयोग करना

    इस लेख में, हम पायथन 3.x में स्टैक और कतार संरचनाओं के बारे में जानेंगे। या जल्दी। यहां हम इन डेटा संरचनाओं के कामकाज और संशोधन पर चर्चा करेंगे - इसमें शामिल हैं - इंसर्शन ऑपरेशन (पुश, एनक्यू) हटाने की कार्रवाई (पॉप, डीक्यू) डिस्प्ले / ट्रैवर्सिंग ऑपरेशन आवश्यकताएं :सूची और सूची संचालन संबंधित