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

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

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

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

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


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

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


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

  • फ़ंक्शन को हल करें () परिभाषित करें। यह जड़ लेगा

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

    • वापसी शून्य

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

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

  • यदि जड़ पत्ती है और जड़ का डेटा सम है, तो

    • वापसी शून्य

  • वापसी जड़

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

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,15,7,20,3] और [9,3,15,20,7] हैं, तो पेड़ होगा - आइए चरणों को देखें - एक विधि को परिभाषित करें build_tree(), यह इनऑर्डर, पोस्टऑर

  1. पायथन में दिए गए पोस्टऑर्डर से एक बाइनरी सर्च ट्री का निर्माण करें

    मान लीजिए कि हमारे पास बाइनरी सर्च ट्री का पोस्टऑर्डर ट्रैवर्सल अनुक्रम है। हमें इन अनुक्रमों से वृक्ष उत्पन्न करना है। तो, अगर पोस्टऑर्डर क्रम [9,15,7,20,3] है, तो पेड़ होगा - एक ट्री बनाने के लिए हमें इनऑर्डर ट्रैवर्सल की भी आवश्यकता होती है, लेकिन बाइनरी सर्च ट्री के लिए, इनऑर्डर ट्रैवर्सल क्र

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

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