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

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

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

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

उदाहरण

class Tree_struct:
   def __init__(self, data=None):
      self.key = data
      self.children = []

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

   def add_node(self, node):
      self.children.append(node)

   def search_node(self, key):
      if self.key == key:
         return self
      for child in self.children:
         temp = child.search_node(key)
         if temp is not None:
            return temp
      return None

   def bfs_operation(self):
      queue = [self]
      while queue != []:
         popped = queue.pop(0)
         for child in popped.children:
            queue.append(child)
         print(popped.key, end=' ')

my_instance = None

print('Menu (assume no duplicate keys)')
print('add <data> at root')
print('add <data> below <data>')
print('bfs')
print('quit')

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

   operation = my_input[0].strip().lower()
   if operation == 'add':
      data = int(my_input[1])
      new_node = Tree_struct(data)
      suboperation = my_input[2].strip().lower()
      if suboperation == 'at':
         my_instance = new_node
      elif suboperation == 'below':
         position = my_input[3].strip().lower()
         key = int(position)
         ref_node = None
         if my_instance is not None:
            ref_node = my_instance.search_node(key)
         if ref_node is None:
            print('No such key')
            continue
         ref_node.add_node(new_node)

   elif operation == 'bfs':
      if my_instance is None:
         print('The tree is empty')
      else:
         print('Breadth First Search traversal is : ', end='')
         my_instance.bfs_operation()
         print()

   elif operation == 'quit':
      break

आउटपुट

Menu (assume no duplicate keys)
add <data> at root
add <data> below <data>
bfs
quit
What operation would you do ? add 6 at root
What operation would you do ? add 4 below 6
What operation would you do ? add 9 below 4
What operation would you do ? bfs
Breadth First Search traversal is : 6 4 9
What operation would you do ? quit

स्पष्टीकरण

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

  • इसमें एक 'init' फ़ंक्शन होता है जिसका उपयोग एक खाली सूची बनाने के लिए किया जाता है।

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

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

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

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

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

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

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

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


  1. पायथन का उपयोग करके बाइनरी ट्री की जड़ को बदलने का कार्यक्रम

    मान लीजिए, हमें एक बाइनरी ट्री और एक नोड दिया गया है जो बाइनरी ट्री के पत्ते पर स्थित है। हमें लीफ नोड को बाइनरी ट्री का रूट नोड बनाना है। हम इसे निम्नलिखित तरीके से कर सकते हैं - यदि नोड में एक बायाँ बच्चा है, तो वह दायाँ बच्चा बन जाता है। एक नोड का माता-पिता उसका बायां बच्चा बन जाता है। इस प

  1. पायथन का उपयोग करके बाइनरी ट्री में दाईं ओर नोड का पता लगाने का कार्यक्रम

    मान लीजिए, हमें एक बाइनरी ट्री प्रदान किया जाता है। हमें एक नोड (u नाम दिया गया) के लिए एक पॉइंटर भी दिया जाता है और हमें दिए गए नोड के ठीक दाईं ओर स्थित नोड को खोजना होता है। दिए गए नोड के दाईं ओर स्थित नोड समान स्तर पर रहना चाहिए और दिया गया नोड या तो लीफ नोड या आंतरिक नोड हो सकता है। तो, अगर इनप

  1. पायथन का उपयोग करके समान लेबल वाले उप-वृक्ष में नोड्स की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास n नोड्स वाला एक रूटेड सामान्य ट्री है, जिसके नोड्स 0 से n-1 तक गिने जाते हैं। प्रत्येक नोड में लोअरकेस अंग्रेजी अक्षर वाला एक लेबल होता है। लेबल्स को लेबल एरे में इनपुट के रूप में दिया जाता है, जहां लेबल्स [i] में ith नोड के लिए लेबल होता है। पेड़ को किनारे की सूची द्वारा दर्श