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

लेफ्ट सबट्री में केवल नोड्स प्रिंट करने के लिए पायथन प्रोग्राम

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

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

उदाहरण

class BinaryTree_struct:
   def __init__(self, data=None):
      self.key = data
      self.left = None
      self.right = None

   def set_root(self, data):
      self.key = data

   def inorder_traversal(self):
      if self.left is not None:
         self.left.inorder_traversal()
      print(self.key, end=' ')
      if self.right is not None:
         self.right.inorder_traversal()

   def insert_at_left(self, new_node):
      self.left = new_node

   def insert_at_right(self, new_node):
      self.right = new_node

   def search_elem(self, key):
      if self.key == key:
         return self
      if self.left is not None:
         temp = self.left.search_elem(key)
         if temp is not None:
            return temp
      if self.right is not None:
         temp = self.right.search_elem(key)
         return temp
      return None

   def print_left_part(self):
      if self.left is not None:
         self.left.inorder_traversal()

my_instance = None

print('Menu (this assumes no duplicate keys)')
print('insert <data> at root')
print('insert <data> left of <data>')
print('insert <data> right of <data>')
print('left')
print('quit')

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

   operation = my_input[0].strip().lower()
   if operation == 'insert':
      data = int(my_input[1])
      new_node = BinaryTree_struct(data)
      suboperation = my_input[2].strip().lower()
      if suboperation == 'at':
         my_instance = new_node
      else:
         position = my_input[4].strip().lower()
         key = int(position)
         ref_node = None
         if my_instance is not None:
            ref_node = my_instance.search_elem(key)
         if ref_node is None:
            print('No such key')
            continue
         if suboperation == 'left':
            ref_node.insert_at_left(new_node)
         elif suboperation == 'right':
            ref_node.insert_at_right(new_node)

   elif operation == 'left':
      print('Nodes of the left subtree are : ', end='')
      if my_instance is not None:
         my_instance.print_left_part()
         print()

   elif operation == 'quit':
      break

आउटपुट

Menu (this assumes no duplicate keys)
insert <data> at root
insert <data> left of <data>
insert <data> right of <data>
left
quit
What operation would you do ? insert 5 at root
What operation would you do ? insert 6 left of 5
What operation would you do ? insert 8 right of 5
What operation would you do ? left
Nodes of the left subtree are : 6
What operation would you do ? quit
Use quit() or Ctrl-D (i.e. EOF) to exit

स्पष्टीकरण

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

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

  • एक 'set_root' विधि परिभाषित की गई है जो बाइनरी ट्री के मूल मान को सेट करने में मदद करती है।

  • इसमें एक 'insert_at_right' विधि है जो तत्वों को पेड़ के दाहिने नोड्स में जोड़ने में मदद करती है।

  • इसमें एक 'insert_at_left' विधि है जो पेड़ के बाएं नोड्स में तत्वों को जोड़ने में मदद करती है।

  • 'इनऑर्डर_ट्रैवर्सल' नाम की एक अन्य विधि जो ऑर्डर ट्रैवर्सल में काम करती है।

  • 'Search_elem' नाम की एक विधि परिभाषित की गई है, जो एक विशिष्ट तत्व की खोज में मदद करती है।

  • 'प्रिंट_लेफ्ट_पार्ट' नाम की एक अन्य विधि परिभाषित की गई है, जो कंसोल पर बाइनरी ट्री के केवल बाएं हिस्से को प्रदर्शित करने में मदद करती है।

  • एक उदाहरण बनाया जाता है और 'कोई नहीं' को असाइन किया जाता है।

  • उपयोगकर्ता इनपुट उस ऑपरेशन के लिए लिया जाता है जिसे निष्पादित करने की आवश्यकता होती है।

  • उपयोगकर्ता की पसंद के आधार पर, ऑपरेशन किया जाता है। • प्रासंगिक आउटपुट कंसोल पर प्रदर्शित होता है।


  1. पायथन में एक पेड़ दूसरे का उपवृक्ष है या नहीं यह जांचने का कार्यक्रम

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

  1. एक सूची में नकारात्मक संख्या मुद्रित करने के लिए पायथन कार्यक्रम

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

  1. जेड फॉर्म में मैट्रिक्स प्रिंट करने के लिए पायथन प्रोग्राम

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