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

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

मान लीजिए कि हमारे पास एक बीएसटी है, दो मान निम्न और उच्च हैं, हमें उन सभी नोड्स को हटाना होगा जो [निम्न, उच्च] (समावेशी) के बीच नहीं हैं।

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

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

कम =7 उच्च =10, तो आउटपुट होगा

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

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

  • एक फ़ंक्शन को हल करें() परिभाषित करें। यह जड़ लेगा, निम्न, उच्च
  • यदि रूट रिक्त है, तो
    • वापसी
  • यदि कम है> रूट का डेटा, तो
    • रिटर्न सॉल्व (रूट का राइट, लो, हाई)
  • यदि उच्च <रूट का डेटा है, तो
    • वापसी हल (रूट के बाएं, कम, उच्च)
  • रूट का दायां :=हल करें (रूट का दायां, निचला, ऊंचा)
  • रूट का बायां:=हल करें (रूट का बायां, निचला, ऊंचा)
  • रिटर्न रूट

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

उदाहरण

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, low, high):
      if not root:
         return
      if low > root.data:
         return self.solve(root.right,low,high)
      if high < root.data:
         return self.solve(root.left,low,high)
         root.right = self.solve(root.right,low,high)
         root.left = self.solve(root.left,low,high)
      return root
ob = Solution()
root = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(9) root.right.left = TreeNode(7) root.right.right = TreeNode(10) root.right.left.left = TreeNode(6) root.right.left.right = TreeNode(8) low = 7
high = 10
ret = ob.solve(root, low, high) print_tree(ret)

इनपुट

root = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(9)
root.right.left = TreeNode(7)
root.right.right = TreeNode(10)
root.right.left.left = TreeNode(6)
root.right.left.right = TreeNode(8)
low = 7
high = 10

आउटपुट

7, 8, 9, 10,

  1. पायथन में बाइनरी ट्री BST है या नहीं, यह जांचने के लिए प्रोग्राम

    मान लीजिए हमारे पास बाइनरी ट्री है; हमें यह जांचना होगा कि यह बाइनरी सर्च ट्री है या नहीं। जैसा कि हम जानते हैं कि बीएसटी में निम्नलिखित गुण होते हैं - इसके बाएँ उपप्रकार के सभी नोड वर्तमान नोड मान से छोटे हैं इसके दाहिने सबट्री के सभी नोड वर्तमान नोड मान से बड़े हैं ये गुण सभी नोड्स के लिए पुनरावर

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

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

  1. यह जांचने का कार्यक्रम कि क्या एक मान BST में मौजूद है या नहीं, Python में है

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