जब एक लिंक्ड सूची का उपयोग करके एक बाइनरी ट्री डेटा संरचना को लागू करने की आवश्यकता होती है, रूट नोड सेट करने की एक विधि, इन-ऑर्डर ट्रैवर्सल करने की एक विधि, रूट नोड के बाईं ओर तत्व सम्मिलित करने के लिए, तत्व सम्मिलित करने की एक विधि रूट नोड के दाईं ओर, और मानों को खोजने की एक विधि परिभाषित की गई है।
नीचे उसी के लिए एक प्रदर्शन है -
उदाहरण
class BinaryTree_structure: def __init__(self, key=None): self.key = key self.left = None self.right = None def set_root(self, key): self.key = key def in_order_traversal(self): if self.left is not None: self.left.in_order_traversal() print(self.key, end=' ') if self.right is not None: self.right.in_order_traversal() def insert_left(self, new_node): self.left = new_node def insert_right(self, new_node): self.right = new_node def search_val(self, key): if self.key == key: return self if self.left is not None: temp = self.left.search_val(key) if temp is not None: return temp if self.right is not None: temp = self.right.search_val(key) return temp return None btree = 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('quit') while True: print('The inorder traversal of binary tree ', end='') if btree is not None: btree.in_order_traversal() print() do = input('What would you like to do? ').split() operation = do[0].strip().lower() if operation == 'insert': data = int(do[1]) new_node = BinaryTree_structure(data) sub_op = do[2].strip().lower() if sub_op == 'at': btree = new_node else: position = do[4].strip().lower() key = int(position) ref_node = None if btree is not None: ref_node = btree.search_val(key) if ref_node is None: print('No such key exists') continue if sub_op == 'left': ref_node.insert_left(new_node) elif sub_op == 'right': ref_node.insert_right(new_node) elif operation == 'quit': break
आउटपुट
Menu (this assumes no duplicate keys) insert <data> at root insert <data> left of <data> insert <data> right of <data> quit The inorder traversal of binary tree What would you like to do? insert 45 at root The inorder traversal of binary tree 45 What would you like to do? insert 78 left of 45 The inorder traversal of binary tree 78 45 What would you like to do? insert 90 right of 45 The inorder traversal of binary tree 78 45 90 What would you like to do? quit
स्पष्टीकरण
-
'बाइनरीट्री_स्ट्रक्चर' वर्ग बनाया गया है।
-
इसमें एक 'set_root' फंक्शन है जो ट्री के लिए रूट वैल्यू सेट करने में मदद करता है।
-
'in_order_traversal' नाम की एक विधि परिभाषित की गई है, जो 'लेफ्ट-> नोड-> राइट' क्रम में पेड़ से गुजरने में मदद करती है।
-
'insert_left' नाम की एक अन्य विधि परिभाषित की गई है, जो मूल मान के बाईं ओर एक तत्व जोड़ने में मदद करती है।
-
'insert_right' नाम की एक अन्य विधि परिभाषित की गई है, जो मूल मान के दाईं ओर एक तत्व जोड़ने में मदद करती है।
-
'Search_val' नाम की एक अन्य विधि परिभाषित की गई है, जो स्टैक के ऊपर से एक मान को हटाने में मदद करती है, और हटाए गए मान को वापस करती है।
-
चार विकल्प दिए गए हैं, जैसे 'इन्सर्ट एट रूट', 'इन्सर्ट टू लेफ्ट', 'इंसर्ट टू राइट ऑफ' और 'क्विट'।
-
उपयोगकर्ता द्वारा इनपुट/पसंद के आधार पर, संबंधित ऑपरेशन किए जाते हैं।
-
यह आउटपुट कंसोल पर प्रदर्शित होता है।