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

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

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

तो, अगर इनपुट पसंद है

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

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

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

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

  • हल () नामक एक विधि को परिभाषित करें, यह पेड़ की जड़ लेगा

  • अगर रूट शून्य है, तो

    • वापसी जड़

  • अगर रूट का बायां हिस्सा शून्य है और रूट का दायां हिस्सा शून्य है, तो

    • वापसी जड़

  • यदि रूट का बायां भाग शून्य है, तो

    • वापसी हल (रूट का अधिकार)

  • अगर जड़ का दाहिना भाग शून्य है, तो

    • वापसी हल (रूट के बाएँ)

  • रूट का बायां:=हल करें (रूट के बाएं)

  • जड़ का अधिकार :=हल करें (मूल का दायां)

  • वापसी जड़


उदाहरण

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() को परिभाषित करें। यह कठिन

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

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

  1. बीएसटी से सभी नोड्स को हटाने का कार्यक्रम जो पायथन में सीमा में नहीं हैं

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