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

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


मान लीजिए हमारे पास एक बाइनरी ट्री रूट है; हमें केवल एक बच्चे वाले सभी नोड्स को हटाना है।

उदाहरण के लिए, यदि इनपुट है

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

तो आउटपुट होगा

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

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

  • solve() नामक एक विधि परिभाषित करें, यह ट्री रूट लेगा
  • यदि रूट null है, तो
    • रूट लौटाएं
  • यदि रूट का बायां null है और रूट का दायां null है, तो
    • रूट लौटाएं
  • यदि रूट का बायां null है, तो
    • solve(रूट का दायां) लौटाएं
  • यदि रूट का दायां null है, तो
    • solve(रूट का बायां) लौटाएं
  • रूट का बायां := solve(रूट का बायां)
  • रूट का दायां := solve(रूट का दायां)
  • रूट लौटाएं


उदाहरण

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:    def solve(self, root):       if not root:          return root       if not root.left and not root.right:          return root       if not root.left:          return self.solve(root.right)       if not root.right:          return self.solve(root.left)       root.left = self.solve(root.left)       root.right = self.solve(root.right)       return root ob = Solution() root = TreeNode(1) root.left = TreeNode(2) root.right = TreeNode(3) root.left.left = TreeNode(4) root.right.right = TreeNode(5) root.left.left.right = TreeNode(6) root.right.right.left = TreeNode(7) root.right.right.right = TreeNode(8) res = ob.solve(root) print_tree(res)

इनपुट

root = TreeNode(1) root.left = TreeNode(2) root.right = TreeNode(3) root.left.left = TreeNode(4) root.right.right = TreeNode(5) root.left.left.right = TreeNode(6) root.right.right.left = TreeNode(7) root.right.right.right = TreeNode(8)

आउटपुट

6, 1, 7, 5, 8,

  1. पायथन में रूट से लीफ तक के सबसे लंबे पथ के योग को खोजने का प्रोग्राम पायथन में रूट से लीफ तक के सबसे लंबे पथ के योग को खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें रूट से लीफ नोड तक के सबसे लंबे पथ का योग ढूंढना है। यदि दो समान लंबे पथ हैं, तो बड़े योग वाले पथ को वापस करें।इसलिए, यदि इनपुट इस तरह हैतो आउटपुट 20 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −एक फ़ंक्शन rec() परिभाषित करें। यह curr लेगायदि

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

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हम बार-बार उन सभी पत्तों को हटाएंगे जिनके मान सम हैं। सभी को हटाने के बाद, यदि केवल सम मान वाला रूट बचता है, तो उसे भी हटा दिया जाएगा। उदाहरण के लिए, यदि इनपुट जैसा है: तो आउटपुट होगा: इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: solve() फंक्शन परिभाषि

  1. पायथन में BST से रेंज में नहीं आने वाले सभी नोड्स को हटाने का प्रोग्राम पायथन में BST से रेंज में नहीं आने वाले सभी नोड्स को हटाने का प्रोग्राम

    मान लीजिए हमारे पास एक BST है, और दो मान low और high हैं, हमें उन सभी नोड्स को हटाना है जो [low, high] (सम्मिलित) के बीच नहीं हैं। उदाहरण के लिए, यदि इनपुट जैसा है: low = 7, high = 10, तो आउटपुट होगा: इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: solve() फंक्शन परिभाषित करें जो root, low, hi