যখন একটি বাইনারি ট্রির ইনঅর্ডার ট্রাভার্সাল ব্যবহার করে 'n'th নোড খুঁজে বের করার প্রয়োজন হয়, তখন একটি বাইনারি ট্রি ক্লাস তৈরি করা হয় রুট এলিমেন্ট সেট করার, বাম বা ডানে এলিমেন্ট যোগ করা, ক্রমান্বয়ে ট্রাভার্সাল করা ইত্যাদির পদ্ধতি সহ। ক্লাসের একটি উদাহরণ তৈরি করা হয়, এবং এটি পদ্ধতিগুলি অ্যাক্সেস করতে ব্যবহার করা যেতে পারে।
নীচে একই -
এর একটি প্রদর্শন রয়েছে৷উদাহরণ
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 inorder_nth(self, n): return self.inorder_nth_helper_fun(n, []) def inorder_nth_helper_fun(self, n, in_ord): if self.left is not None: temp = self.left.inorder_nth_helper_fun(n, in_ord) if temp is not None: return temp in_ord.append(self) if n == len(in_ord): return self if self.right is not None: temp = self.right.inorder_nth_helper_fun(n, in_ord) if temp is not None: return temp def insert_t0_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 btree_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('inorder ') print('quit') while True: do = input('What would you like to do? ').split() operation = do[0].strip().lower() if operation == 'insert': data = int(do[1]) new_node = BinaryTree_struct(data) suboperation = do[2].strip().lower() if suboperation == 'at': btree_instance = new_node else: position = do[4].strip().lower() key = int(position) ref_node = None if btree_instance is not None: ref_node = btree_instance.search_elem(key) if ref_node is None: print('No such key.') continue if suboperation == 'left': ref_node.insert_t0_left(new_node) elif suboperation == 'right': ref_node.insert_to_right(new_node) elif operation == 'inorder': if btree_instance is not None: index = int(do[1].strip().lower()) node = btree_instance.inorder_nth(index) if node is not None: print('nth term of inorder traversal: {}'.format(node.key)) else: print('The index exceeds maximum possible index.') else: print('The tree is empty...') elif operation == 'quit': break
আউটপুট
Menu (this assumes no duplicate keys) insert <data> at root insert <data> left of <data> insert <data> right of <data> inorder quit What would you like to do? insert 5 at root What would you like to do? insert 6 left of 5 What would you like to do? insert 8 right of 5 What would you like to do? inorder 5 The index exceeds maximum possible index. What would you like to do? 6 6
ব্যাখ্যা
-
প্রয়োজনীয় গুণাবলী সহ 'BinaryTree_struct' ক্লাস তৈরি করা হয়েছে।
-
এটির একটি 'init' ফাংশন রয়েছে যা বাম এবং ডান নোডগুলিকে 'কোনও নয়' এ সেট করতে ব্যবহৃত হয়।
-
এটির একটি 'set_root' পদ্ধতি রয়েছে যা বাইনারি গাছের মূল সেট করতে সাহায্য করে।
-
'inorder_nth' নামে আরেকটি পদ্ধতি যা পুনরাবৃত্তি ব্যবহার করে ইনঅর্ডার ট্রাভার্সাল করে।
-
তাই এটির পাশাপাশি সংজ্ঞায়িত একটি সহায়ক ফাংশন রয়েছে৷
৷ -
'insert_to_right' নামের আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা রুট নোডের ডানদিকে উপাদান যোগ করতে সাহায্য করে।
-
'insert_to_left' নামের একটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা রুট নোডের বাম দিকে উপাদান যোগ করতে সাহায্য করে।
-
'সার্চ_এলেম' নামের একটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা একটি নির্দিষ্ট উপাদান অনুসন্ধানে সহায়তা করে।
-
'BinaryTree_struct' ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে।
-
যে ক্রিয়াকলাপটি সম্পাদন করা প্রয়োজন তার জন্য ব্যবহারকারীর ইনপুট নেওয়া হয়৷
-
ব্যবহারকারীর পছন্দের উপর নির্ভর করে, অপারেশন সঞ্চালিত হয়।
-
প্রাসঙ্গিক আউটপুট কনসোলে প্রদর্শিত হয়।