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

पायथन में स्टैक का उपयोग करके पोस्टऑर्डर ट्रैवर्सल से BST बनाना

समस्या विवरण

बाइनरी सर्च ट्री का पोस्टऑर्डर ट्रैवर्सल दिया गया है, उससे BST पुनर्निर्मित करें।

उदाहरण

इनपुट: [6, 12, 10, 55, 45, 15]

आउटपुट: इनऑर्डर ट्रैवर्सल: 6 10 12 15 45 55

एल्गोरिदम (स्टैक-आधारित)

  1. अंतिम तत्व रूट है
  2. स्टैक में रूट डालें
  3. दाएं से बाएं (n-2 से 0) ट्रैवर्स करें:
    • नया नोड x बनाएं
    • जब तक स्टैक खाली नहीं और postorder[i] < stack[-1].val:
      • temp = stack.pop()
    • यदि temp मौजूद: temp.left = x
    • अन्यथा: stack[-1].right = x
    • x को स्टैक में डालें
  4. रूट वापस करें

पायथन कार्यान्वयन

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 = [root]
    i = n - 2
    while i >= 0:
        x = TreeNode(postorder[i])
        temp = None
        while stk and postorder[i] < stk[-1].val:
            temp = stk.pop()
        if temp:
            temp.left = x
        else:
            stk[-1].right = x
        stk.append(x)
        i -= 1
    return root

def inorder(node):
    if node:
        inorder(node.left)
        print(node.val, end=' ')
        inorder(node.right)

postorder = [6, 12, 10, 55, 45, 15]
root = solve(postorder)
print("Inorder traversal:", end=' ')
inorder(root)

इनपुट

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

आउटपुट

6 10 12 15 45 55
  1. पायथन में इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल से बाइनरी ट्री बनाएं पायथन में इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल से बाइनरी ट्री बनाएं

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

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

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

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

    इस लेख में, हम पायथन 3.x (या पूर्व संस्करणों) में Stack और Queue संरचनाओं के बारे में सीखेंगे। यहाँ हम इन डेटा संरचनाओं के भीतर कार्य और संशोधन पर चर्चा करेंगे। इसमें शामिल हैं - सम्मिलन संक्रिया (Push, Enqueue) हटाने की संक्रिया (Pop, Dequeue) प्रदर्शन/ट्रैवर्सल संक्रिया पूर्वापेक्षाएँ: सूची औ