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

पायथन में पोस्टऑर्डर और इनऑर्डर से बाइनरी ट्री बनाना

समस्या विवरण

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

उदाहरण

इनऑर्डर: [9, 3, 15, 20, 7]

पोस्टऑर्डर: [9, 15, 7, 20, 3]

आउटपुट (इनऑर्डर): 9, 3, 15, 20, 7

एल्गोरिदम (रिकर्सिव)

  1. पोस्टऑर्डर का अंतिम तत्व रूट है
  2. इनऑर्डर में रूट का इंडेक्स ind ढूंढें
  3. बायां सबट्री: inorder[:ind], postorder (उपयुक्त भाग)
  4. दायां सबट्री: inorder[ind+1:], postorder (उपयुक्त भाग)
  5. रिकर्सिवली बनाएं

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

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:
        print_tree(root.left)
        print(root.data, end=', ')
        print_tree(root.right)

class Solution:
    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]))

इनपुट

inorder=[9,3,15,20,7], postorder=[9,15,7,20,3]

आउटपुट

9, 3, 15, 20, 7
  1. पायथन में बाइनरी ट्री इनऑर्डर ट्रैवर्सल पायथन में बाइनरी ट्री इनऑर्डर ट्रैवर्सल

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

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

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

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

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