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

पायथन में दिए गए पोस्टऑर्डर से एक बाइनरी सर्च ट्री का निर्माण करें


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

पायथन में दिए गए पोस्टऑर्डर से एक बाइनरी सर्च ट्री का निर्माण करें

एक ट्री बनाने के लिए हमें इनऑर्डर ट्रैवर्सल की भी आवश्यकता होती है, लेकिन बाइनरी सर्च ट्री के लिए, इनऑर्डर ट्रैवर्सल क्रमबद्ध रूप में होगा।

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

  • इनऑर्डर =पोस्टऑर्डर ट्रैवर्सल की क्रमबद्ध सूची।

  • एक विधि को परिभाषित करें build_tree(), यह इनऑर्डर, पोस्टऑर्डर लेगा -

  • अगर इनऑर्डर सूची खाली नहीं है -

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

    • ind :=इनऑर्डर सूची में रूट डेटा की अनुक्रमणिका

    • जड़ का अधिकार :=build_tree(inorder in index ind to end, postorder)

    • रूट के बाईं ओर:=बिल्ड_ट्री (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):
   if root is not None:
      print_tree(root.left)
      print(root.data, end = ', ')
      print_tree(root.right)
class Solution(object):
   def buildTree(self, inorder, postorder):
      if inorder:
         root = TreeNode(postorder.pop())
         ind = inorder.index(root.data)
         root.right = self.buildTree(inorder[ind+1:],postorder)
         root.left = self.buildTree(inorder[:ind],postorder)
         return root
ob1 = Solution()
postorder = [3,9,20,15,7]
inorder = list(sorted([3,9,20,15,7]))
print_tree(ob1.buildTree(inorder, postorder))

इनपुट

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

आउटपुट

[3,7,9,15,20]

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

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

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

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

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

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