जब पोस्टऑर्डर ट्रैवर्सल का उपयोग करके डेप्थ फर्स्ट सर्च लागू करना हो, तो एक ट्री क्लास बनाई जाती है जिसमें एलिमेंट जोड़ने, विशिष्ट एलिमेंट खोजने और पोस्टऑर्डर ट्रैवर्सल करने आदि के लिए मेथड्स होते हैं। क्लास का एक इंस्टेंस बनाया जाता है और इसका उपयोग मेथड्स को एक्सेस करने के लिए किया जा सकता है।
उदाहरण
class Tree_Struct:
def __init__(self, key=None):
self.key = key
self.children = []
def add_elem(self, node):
self.children.append(node)
def search_elem(self, key):
if self.key == key:
return self
for child in self.children:
temp = child.search_elem(key)
if temp is not None:
return temp
return None
def postorder_traversal(self):
for child in self.children:
child.postorder_traversal()
print(self.key, end=' ')
my_instance = None
print('मेन्यू (यह मानता है कोई डुप्लिकेट कीज़ नहीं)')
print('add at root')
print('add below ')
print('dfs')
print('quit')
while True:
my_input = input('आप कौन सा ऑपरेशन करेंगे? ').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
else:
position = my_input[3].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('ऐसी कोई की नहीं है')
continue
ref_node.add_elem(new_node)
elif operation == 'dfs':
print('पोस्ट-ऑर्डर ट्रैवर्सल है:', end='')
my_instance.postorder_traversal()
print()
elif operation == 'quit':
break
आउटपुट
मेन्यू (यह मानता है कोई डुप्लिकेट कीज़ नहीं) add at root add below dfs quit आप कौन सा ऑपरेशन करेंगे? add 5 at root आप कौन सा ऑपरेशन करेंगे? insert 9 below 5 आप कौन सा ऑपरेशन करेंगे? insert 2 below 9 आप कौन सा ऑपरेशन करेंगे? dfs पोस्ट-ऑर्डर ट्रैवर्सल है: 5 आप कौन सा ऑपरेशन करेंगे? quit
व्याख्या
आवश्यक एट्रिब्यूट्स के साथ 'Tree_struct' क्लास बनाई जाती है।
इसमें एक 'init' फंक्शन होता है जो एक खाली सूची बनाने के लिए उपयोग किया जाता है।
इसमें एक 'add_elem' मेथड होती है जो ट्री में एलिमेंट्स जोड़ने में मदद करती है।
'postorder_traversal' नामक एक अन्य मेथड जो पोस्टऑर्डर ट्रैवर्सल करती है।
'search_elem' नामक एक मेथड परिभाषित की जाती है जो किसी विशिष्ट एलिमेंट को खोजने में मदद करती है।
एक इंस्टेंस बनाया जाता है और 'None' असाइन किया जाता है।
उपयोगकर्ता इनपुट उस ऑपरेशन के लिए लिया जाता है जिसे करने की आवश्यकता है।
उपयोगकर्ता की पसंद के आधार पर ऑपरेशन किया जाता है।
प्रासंगिक आउटपुट कंसोल पर प्रदर्शित होता है।