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

बाइनरी सर्च ट्री में सबसे छोटे और सबसे बड़े तत्वों को खोजने के लिए पायथन प्रोग्राम

जब बाइनरी सर्च ट्री में सबसे छोटे और सबसे बड़े तत्वों को खोजने की आवश्यकता होती है, तो एक बाइनरी ट्री क्लास बनाई जाती है, और ट्री में तत्वों को जोड़ने के तरीके, एक विशिष्ट नोड की खोज को परिभाषित किया जाता है। कक्षा का एक उदाहरण बनाया जाता है, और इन विधियों के साथ प्रयोग किया जाता है।

नीचे उसी का एक प्रदर्शन है -

उदाहरण

class BST_Node:
   def __init__(self, key):
      self.key = key
      self.left = None
      self.right = None
      self.parent = None

   def insert_elem(self, node):
      if self.key > node.key:
         if self.left is None:
            self.left = node
            node.parent = self
         else:
            self.left.insert_elem(node)
      elif self.key < node.key:
         if self.right is None:
            self.right = node
            node.parent = self
         else:
            self.right.insert_elem(node)

   def search_node(self, key):
      if self.key > key:
         if self.left is not None:
            return self.left.search_node(key)
         else:
            return None
      elif self.key < key:
         if self.right is not None:
            return self.right.search_node(key)
         else:
            return None
      return self

class BSTree:
   def __init__(self):
      self.root = None

   def add_elem(self, key):
      new_node = BST_Node(key)
      if self.root is None:
         self.root = new_node
      else:
         self.root.insert_elem(new_node)

   def search_node(self, key):
      if self.root is not None:
         return self.root.search_node(key)

   def get_smallest_elem(self):
      if self.root is not None:
         current = self.root
         while current.left is not None:
            current = current.left
         return current.key

   def get_largest_elem(self):
      if self.root is not None:
         current = self.root
         while current.right is not None:
            current = current.right
         return current.key

my_instance = BSTree()

print('Menu (Assume no duplicate keys)')
print('add ')
print('smallest')
print('largest')
print('quit')

while True:
   my_input = input('What operation would you perform ? ').split()

   operation = my_input[0].strip().lower()
   if operation == 'add':
      key = int(my_input[1])
      my_instance.add_elem(key)
   if operation == 'smallest':
      smallest = my_instance.get_smallest_elem()
      print('The smallest element is : {}'.format(smallest))
   if operation == 'largest':
      largest = my_instance.get_largest_elem()
      print('The largest element is : {}'.format(largest))
   elif operation == 'quit':
      break

आउटपुट

Menu (Assume no duplicate keys)
add <key>
smallest
largest
quit
What operation would you perform ? add 5
What operation would you perform ? add 8
What operation would you perform ? add 11
What operation would you perform ? add 0
What operation would you perform ? add 3
What operation would you perform ? smallest
The smallest element is : 0
What operation would you perform ? largest
The largest element is : 11
What operation would you perform ? quit’

स्पष्टीकरण

  • आवश्यक विशेषताओं वाला 'BST_Node' वर्ग बनाया गया है।

  • इसमें एक 'init' फंक्शन होता है जिसका इस्तेमाल बाएँ, दाएँ और पैरेंट नोड्स को 'कोई नहीं' पर सेट करने के लिए किया जाता है।

  • इसमें एक 'insert_element' विधि है जो एक तत्व को बाइनरी ट्री में सम्मिलित करने में मदद करती है।

  • 'Search_node' नाम की एक अन्य विधि जो पेड़ में एक विशिष्ट नोड की खोज करती है।

  • 'बीएसट्री' नामक एक अन्य वर्ग परिभाषित किया गया है, जहां रूट 'कोई नहीं' पर सेट है।

  • 'add_elem' नाम की एक विधि परिभाषित की गई है जो पेड़ में तत्वों को जोड़ती है।

  • 'Search_node' नाम की एक और विधि है जो पेड़ में एक विशिष्ट नोड को खोजने में मदद करती है।

  • 'get_smallest_node' नाम की एक अन्य विधि परिभाषित की गई है जो पेड़ में सबसे छोटे नोड को लाने में मदद करती है।

  • 'get_largest_node' नाम की एक अन्य विधि परिभाषित की गई है जो पेड़ में सबसे बड़े नोड को लाने में मदद करती है।

  • 'बीएसट्री' वर्ग का एक ऑब्जेक्ट बनाया गया है।

  • उपयोगकर्ता द्वारा चुने गए ऑपरेशन के आधार पर, ऑपरेशन किया जाता है।


  1. पायथन में दिए गए बाइनरी ट्री में सबसे बड़ा पूर्ण उपट्री खोजें

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें इस बाइनरी ट्री में अधिकतम पूर्ण उप-वृक्ष का आकार खोजना होगा। जैसा कि हम जानते हैं कि एक पूर्ण बाइनरी ट्री एक बाइनरी ट्री है यदि सभी स्तर पूरी तरह से बिना संभावित अंतिम स्तर के भरे हुए हैं और अंतिम स्तर में यथासंभव सभी कुंजियाँ हैं। तो, अगर इनपुट पसंद है

  1. पायथन में दिए गए बाइनरी ट्री में सबसे बड़ा परफेक्ट सबट्री खोजें

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

  1. सूची में सबसे छोटी संख्या खोजने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें सभी सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है यहां हम या तो सूची को क्रमबद्ध कर सकते हैं और सबसे छोटा तत्व प्राप्त कर सकते हैं या सबसे छोटा तत्व प्राप्त करने के लिए अंतर्न