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

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

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

  • बाएं सबट्री को पुनरावर्ती रूप से पार करें।

  • वर्तमान नोड को पार करें।

  • पुनरावर्ती रूप से दाएँ उपप्रकार को पार करें।

हमें इस समस्या को पुनरावृत्त रूप से हल करने का प्रयास करना होगा।

तो, अगर इनपुट पसंद है

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

तो आउटपुट [12,13,4,16,7,14,22]

. होगा

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

  • इनऑर्डर :=एक नई सूची

  • स्टैक :=एक खाली स्टैक

  • निम्नलिखित को असीम रूप से करें, करें

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

      • जड़ को ढेर में धकेलें

      • जड़ :=जड़ के बाएँ

    • अन्यथा जब स्टैक खाली न हो, तब

      • जड़:=स्टैक का शीर्ष तत्व और स्टैक से पॉप

      • इनऑर्डर के अंत में रूट का मान डालें

      • जड़ :=जड़ के दाईं ओर

    • अन्यथा,

      • लूप से बाहर आएं

  • वापसी क्रम में

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

उदाहरण

class TreeNode:
   def __init__(self, value):
      self.val = value
      self.left = None
      self.right = None
class Solution:
   def solve(self, root):
      inorder = []
      stack = []
      while True:
         if root:
            stack.append(root)
            root = root.left
         elif stack:
            root = stack.pop()
            inorder.append(root.val)
            root = root.right
         else:
            break
      return inorder

ob = Solution()
root = TreeNode(13)
root.left = TreeNode(12)
root.right = TreeNode(14)
root.right.left = TreeNode(16)
root.right.right = TreeNode(22)
root.right.left.left = TreeNode(4)
root.right.left.right = TreeNode(7)
print(ob.solve(root))

इनपुट

root = TreeNode(13)
root.left = TreeNode(12)
root.right = TreeNode(14)
root.right.left = TreeNode(16)
root.right.right = TreeNode(22)
root.right.left.left = TreeNode(4)
root.right.left.right = TreeNode(7)

आउटपुट

[12, 13, 4, 16, 7, 14, 22]

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

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

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

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

  1. पायथन में बाइनरी ट्री को उल्टा करें

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