जब किसी ट्री में लीफ नोड्स की संख्या की गणना करने की आवश्यकता होती है, तो एक 'ट्री_स्ट्रक्चर' क्लास बनाई जाती है, रूट वैल्यू जोड़ने के तरीके और अन्य बच्चों के मूल्यों को परिभाषित किया जाता है। विभिन्न विकल्प दिए गए हैं जिन्हें उपयोगकर्ता चुन सकता है। उपयोगकर्ता की पसंद के आधार पर, ऑपरेशन ट्री तत्वों पर किया जाता है।
नीचे उसी का एक प्रदर्शन है -
उदाहरण
class Tree_structure: def __init__(self, data=None): self.key = data self.children = [] def set_root_node(self, data): self.key = data def add_vals(self, node): self.children.append(node) def search_val(self, key): if self.key == key: return self for child in self.children: temp = child.search(key) if temp is not None: return temp return None def count_leaf_node(self): leaf_nodes = [] self.count_leaf_node_helper_fun(leaf_nodes) return len(leaf_nodes) def count_leaf_node_helper_fun(self, leaf_nodes): if self.children == []: leaf_nodes.append(self) else: for child in self.children: child.count_leaf_node_helper_fun(leaf_nodes) tree = None print('Menu (this assumes no duplicate keys)') print('add <data> at root') print('add <data> below <data>') print('count') print('quit') while True: my_input = input('What operation would you like to perform ? ').split() operation = my_input[0].strip().lower() if operation == 'add': data = int(my_input[1]) newNode = Tree_structure(data) sub_op = my_input[2].strip().lower() if sub_op == 'at': tree = newNode elif sub_op == 'below': my_pos = my_input[3].strip().lower() key = int(my_pos) ref_node = None if tree is not None: ref_node = tree.search_val(key) if ref_node is None: print('No such key.') continue ref_node.add_vals(newNode) elif operation == 'count': if tree is None: print('The tree is empty') else: count = tree.count_leaf_node() print('The number of leaf nodes are : {}'.format(count)) elif operation == 'quit': break
आउटपुट
Menu (this assumes no duplicate keys) add <data> at root add <data> below <data> count quit What operation would you like to perform ? add 78 at root What operation would you like to perform ? add 90 below 78 What operation would you like to perform ? add 8 below 78 What operation would you like to perform ? count The number of leaf nodes are : 2 What operation would you like to perform ? quit
स्पष्टीकरण
-
'ट्री_स्ट्रक्चर' वर्ग बनाया गया है।
-
यह 'कुंजी' को True पर सेट करता है और पेड़ के बच्चों के लिए एक खाली सूची सेट करता है।
-
इसमें एक 'set_root' फंक्शन है जो ट्री के लिए रूट वैल्यू सेट करने में मदद करता है।
-
'add_vals' नाम की एक विधि परिभाषित की गई है, जो ट्री में एक तत्व जोड़ने में मदद करती है।
-
'Search_val' नाम की एक और विधि परिभाषित की गई है, जो ट्री में किसी तत्व को खोजने में मदद करती है।
-
'काउंट_लीफ_नोड्स' नाम की एक अन्य विधि परिभाषित की गई है, जो पेड़ के लीफ नोड्स की गिनती प्राप्त करने में मदद करती है।
-
'count_leaf_nodes_helper' नाम की एक अन्य विधि परिभाषित की गई है, जो पहले से परिभाषित फ़ंक्शन को कॉल करती है- यह एक पुनरावर्ती फ़ंक्शन है।
-
चार विकल्प दिए गए हैं, जैसे 'रूट में जोड़ें', 'नीचे जोड़ें', 'गिनती' और 'छोड़ें'।
-
उपयोगकर्ता द्वारा दिए गए विकल्प के आधार पर, संबंधित ऑपरेशन किया जाता है।
-
यह आउटपुट कंसोल पर प्रदर्शित होता है।