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

पायथन में बाइनरी ट्री से सम मान वाले सभी पत्तों को हटाने का प्रोग्राम


मान लीजिए हमारे पास एक बाइनरी ट्री है, हम बार-बार उन सभी पत्तों को हटाएंगे जिनके मान सम हैं। सभी को हटाने के बाद, यदि केवल सम मान वाला रूट बचता है, तो उसे भी हटा दिया जाएगा।

उदाहरण के लिए, यदि इनपुट जैसा है: पायथन में बाइनरी ट्री से सम मान वाले सभी पत्तों को हटाने का प्रोग्राम तो आउटपुट होगा: पायथन में बाइनरी ट्री से सम मान वाले सभी पत्तों को हटाने का प्रोग्राम

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

  • solve() फंक्शन परिभाषित करें जो रूट लेता है
  • यदि रूट null है, तो null वापस करें
  • रूट का बायां := solve(रूट का बायां)
  • रूट का दायां := solve(रूट का दायां)
  • यदि रूट पत्ता है और रूट का डेटा सम है, तो null वापस करें
  • रूट वापस करें

उदाहरण

class TreeNode:
    def __init__(self, data, left=None, right=None):
        self.data = data
        self.left = left
        self.right = right

def inorder(root):
    if root:
        inorder(root.left)
        print(root.data, end=', ')
        inorder(root.right)

class Solution:
    def solve(self, root):
        if not root:
            return None
        root.left = self.solve(root.left)
        root.right = self.solve(root.right)
        if not root.left and not root.right and root.data % 2 == 0:
            return None
        return root

ob = Solution()
root = TreeNode(13)
root.left = TreeNode(12)
root.right = TreeNode(14)
root.right.left = TreeNode(16)
root.right.right = TreeNode(22)
root.right.left.left = TreeNode(4)
root.right.left.right = TreeNode(7)
ob.solve(root)
inorder(root)

इनपुट

root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7)

आउटपुट

13, 16, 7, 14,
  1. पायथन में पोस्टऑर्डर और इनऑर्डर से बाइनरी ट्री बनाना पायथन में पोस्टऑर्डर और इनऑर्डर से बाइनरी ट्री बनाना

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

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

    समस्या विवरण बाइनरी सर्च ट्री का पोस्टऑर्डर ट्रैवर्सल दिया गया है, ट्री पुनर्निर्मित करें। BST के लिए इनऑर्डर = सॉर्टेड पोस्टऑर्डर होता है। उदाहरण पोस्टऑर्डर: [3, 9, 20, 15, 7] इनऑर्डर (सॉर्टेड): [3, 7, 9, 15, 20] आउटपुट (इनऑर्डर): 3, 7, 9, 15, 20 एल्गोरिदम inorder = sorted(postorder) सामान्य बाइ

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

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