কম্পিউটার টিউটোরিয়াল

পাইথনে পোস্টঅর্ডার ও ইনঅর্ডার থেকে বাইনারি ট্রি তৈরি করুন


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

পাইথনে পোস্টঅর্ডার ও ইনঅর্ডার থেকে বাইনারি ট্রি তৈরি করুন

चरण निम्नलिखित हैं:

  • build_tree() नामक एक मेथड परिभाषित करें, यह inorder, postorder लेगा:
    • यदि inorder सूची खाली नहीं है:
      • root := postorder के अंतिम मान के साथ एक ट्री नोड बनाएं, फिर उस तत्व को हटा दें
      • ind := inorder सूची में root डेटा का इंडेक्स
      • root का राइट := build_tree(inorder[ind+1:], postorder)
      • root का लेफ्ट := build_tree(inorder[:ind], postorder)
    • root लौटाएं

उदाहरण

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

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()
print_tree(ob1.buildTree([9,3,15,20,7], [9,15,7,20,3]))

इनपुट

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

आउटपुट

[9,3,15,20,7]

  1. পাইথনে ইনঅর্ডার এবং পোস্টঅর্ডার ট্রাভার্সাল থেকে বাইনারি ট্রি কনস্ট্রাক্ট করা

  2. পাইথনে বাইনারি ট্রি ইনঅর্ডার ট্রাভার্সাল

  3. পাইথনে বাইনারি সার্চ ট্রিতে লোয়েস্ট কমন আনসেসটর

  4. পাইথনে বাইনারি ট্রি ইনভার্ট (Invert Binary Tree)