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

एक पेड़ की मिरर कॉपी बनाने के लिए पायथन प्रोग्राम और बीएफएस ट्रैवर्सल का उपयोग करके प्रदर्शित करें

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

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

उदाहरण

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

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

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

   def insert_to_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 copy_mirror(self):
      mirror = BinaryTree_struct(self.key)
      if self.right is not None:
         mirror.left = self.right.copy_mirror()
      if self.left is not None:
         mirror.right = self.left.copy_mirror()
      return mirror

   def bfs(self):
      queue = [self]
      while queue != []:
         popped = queue.pop(0)
         if popped.left is not None:
            queue.append(popped.left)
         if popped.right is not None:
            queue.append(popped.right)
         print(popped.key, end=' ')

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('mirror')
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 exists..')
            continue
         if suboperation == 'left':
            ref_node.insert_to_left(new_node)
         elif suboperation == 'right':
            ref_node.insert_to_right(new_node)

   elif operation == 'mirror':
      if my_instance is not None:
         print('Creating a mirror copy...')
         mirror = my_instance.copy_mirror()
         print('The breadth first search traversal of original tree is : ')
         my_instance.bfs()
         print()
         print('The breadth first traversal of mirror is : ')
         mirror.bfs()
         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>
mirror
quit
What operation would you do ? insert 6 at root
What operation would you do ? insert 9 left of 6
What operation would you do ? insert 4 right of 6
What operation would you do ? mirror
Creating a mirror copy...
The breadth first search traversal of original tree is :
6 9 4
The breadth first traversal of mirror is :
6 4 9
What operation would you do ?quit
Use quit() or Ctrl-D (i.e. EOF) to exit

स्पष्टीकरण

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

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

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

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

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

  • इसमें एक 'बीएफएस' विधि है जो पेड़ पर चौड़ाई पहले खोज ट्रैवर्सल करने में मदद करती है।

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

  • इसमें एक 'copy_mirror' तरीका है जो बाइनरी ट्री की कॉपी बनाने में मदद करता है।

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

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

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

  • प्रासंगिक आउटपुट कंसोल पर प्रदर्शित होता है।


  1. पायथन और टिंकर का उपयोग करके क्लिपबोर्ड से कॉपी करें

    क्लिपबोर्ड से कॉपी करने के लिए, हम clipboard_get() . का उपयोग कर सकते हैं टिंकर की विधि। आइए एक उदाहरण लें और देखें कि क्लिपबोर्ड से डेटा कैसे प्राप्त करें और इसे टिंकर विंडो पर प्रदर्शित करें। कदम - टिंकर लाइब्रेरी इंपोर्ट करें और टिंकर फ्रेम का इंस्टेंस बनाएं। ज्यामिति . का उपयोग करके फ़्रेम

  1. पायथन का उपयोग करके एक अभिव्यक्ति वृक्ष बनाने और उसका मूल्यांकन करने का कार्यक्रम

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

  1. TensorFlow का उपयोग टेंसर बनाने और पायथन का उपयोग करके एक संदेश प्रदर्शित करने के लिए कैसे किया जा सकता है?

    Tensorflow एक मशीन लर्निंग फ्रेमवर्क है जो Google द्वारा प्रदान किया जाता है। यह एक ओपन-सोर्स फ्रेमवर्क है जिसका उपयोग एल्गोरिदम, गहन शिक्षण अनुप्रयोगों और बहुत कुछ को लागू करने के लिए पायथन के साथ संयोजन में किया जाता है। इसका उपयोग अनुसंधान और उत्पादन उद्देश्यों के लिए किया जाता है। इसमें अनुकूलन