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

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

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

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

आइए चरणों को देखें -

  • मान लीजिए कि विधि को प्रीऑर्डर और इनऑर्डर सूचियों के साथ बिल्डट्री कहा जाता है
  • रूट:=प्रीऑर्डर से पहला नोड, और प्रीऑर्डर से पहला नोड हटाएं
  • root_index :=इनऑर्डर सूची से root.val की अनुक्रमणिका
  • बाएं या रूट:=बिल्डट्री (प्रीऑर्डर, इनऑर्डर का सबसेट 0 से रूट_इंडेक्स तक)
  • दाएं या रूट:=बिल्डट्री (प्रीऑर्डर, रूट_इंडेक्स + 1 से अंत तक इनऑर्डर का सबसेट)

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

उदाहरण

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
def print_tree(root):
   #print using inorder traversal
   if root is not None:
      print_tree(root.left)
      print(root.data, end = ',')
      print_tree(root.right)
class Solution(object):
   def buildTree(self, preorder, inorder):
      if inorder:
         root = TreeNode(preorder.pop(0))
         root_index = inorder.index(root.data)
         root.left = self.buildTree(preorder,inorder[:root_index])
         root.right = self.buildTree(preorder,inorder[root_index+1:])
         return root
ob1 = Solution()
print_tree(ob1.buildTree([3,9,20,15,7], [9,3,15,20,7]))

इनपुट

[3,9,20,15,7]
[9,3,15,20,7]

आउटपुट

9, 3, 15, 20, 7,

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

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

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

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

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

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