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

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


मान लीजिए हमें एक बाइनरी सर्च ट्री बनाना है जो दिए गए प्रीऑर्डर ट्रैवर्सल से मेल खाता हो। इसलिए यदि प्री-ऑर्डर ट्रैवर्सल [8,5,1,7,10,12] जैसा है, तो आउटपुट [8,5,10,1,7,null,12] होगा, इसलिए ट्री होगा -

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

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • root := प्रीऑर्डर ट्रैवर्सल लिस्ट का 0वां नोड
  • stack := एक स्टैक, और रूट को स्टैक में पुश करें
  • प्रीऑर्डर लिस्ट के दूसरे एलिमेंट से प्रत्येक एलिमेंट i के लिए
    • i := मान i वाला एक नोड
    • यदि i का मान स्टैक के टॉप एलिमेंट से कम है, तो
      • स्टैक टॉप नोड का बायां := i
      • i को स्टैक में इन्सर्ट करें
    • अन्यथा
      • जब तक स्टैक खाली नहीं है, और स्टैक टॉप एलिमेंट का मान i के मान से कम है
        • last := स्टैक का टॉप
        • स्टैक से एलिमेंट पॉप करें
      • last नोड का दायां := i
      • i को स्टैक में इन्सर्ट करें
  • root लौटाएं

उदाहरण

class Solution(object):
    def bstFromPreorder(self, preorder):
        \"\"\"
        :type preorder: List[int]
        :rtype: TreeNode
        \"\"\"
        root = TreeNode(preorder[0])
        stack = [root]
        for i in preorder[1:]:
            i = TreeNode(i)
            if i.val

इनपुट

[8,5,1,7,10,12]

आउटपुट

[8,5,10,1,7,null,12]

  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. पायथन में क्रमबद्ध सरणी को बाइनरी सर्च ट्री में बदलें पायथन में क्रमबद्ध सरणी को बाइनरी सर्च ट्री में बदलें

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