যখন বাম সাবট্রিতে নোডগুলি প্রিন্ট করার প্রয়োজন হয়, তখন একটি ক্লাস তৈরি করা যেতে পারে যা পদ্ধতিগুলি নিয়ে গঠিত যা রুট নোড সেট করতে, ক্রমানুসারে ট্র্যাভার্সাল সম্পাদন করতে, রুট নোডের ডানদিকে উপাদানগুলি সন্নিবেশ করতে পারে, বাম দিকে রুট নোড, এবং তাই। ক্লাসের একটি উদাহরণ তৈরি করা হয়, এবং পদ্ধতিগুলি প্রয়োজনীয় ক্রিয়াকলাপ সম্পাদন করতে ব্যবহার করা যেতে পারে।
নীচে একই -
এর একটি প্রদর্শন রয়েছে৷উদাহরণ
class BinaryTree_struct:
def __init__(self, data=None):
self.key = data
self.left = None
self.right = None
def set_root(self, data):
self.key = data
def inorder_traversal(self):
if self.left is not None:
self.left.inorder_traversal()
print(self.key, end=' ')
if self.right is not None:
self.right.inorder_traversal()
def insert_at_left(self, new_node):
self.left = new_node
def insert_at_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
def print_left_part(self):
if self.left is not None:
self.left.inorder_traversal()
my_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('left')
print('quit')
while True:
my_input = input('What operation would you do ? ').split()
operation = my_input[0].strip().lower()
if operation == 'insert':
data = int(my_input[1])
new_node = BinaryTree_struct(data)
suboperation = my_input[2].strip().lower()
if suboperation == 'at':
my_instance = new_node
else:
position = my_input[4].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('No such key')
continue
if suboperation == 'left':
ref_node.insert_at_left(new_node)
elif suboperation == 'right':
ref_node.insert_at_right(new_node)
elif operation == 'left':
print('Nodes of the left subtree are : ', end='')
if my_instance is not None:
my_instance.print_left_part()
print()
elif operation == 'quit':
break আউটপুট
Menu (this assumes no duplicate keys) insert <data> at root insert <data> left of <data> insert <data> right of <data> left quit What operation would you do ? insert 5 at root What operation would you do ? insert 6 left of 5 What operation would you do ? insert 8 right of 5 What operation would you do ? left Nodes of the left subtree are : 6 What operation would you do ? quit Use quit() or Ctrl-D (i.e. EOF) to exit
ব্যাখ্যা
-
প্রয়োজনীয় গুণাবলী সহ 'BinaryTree_struct' ক্লাস তৈরি করা হয়েছে।
-
এটির একটি 'init' ফাংশন রয়েছে যা বাম এবং ডান নোডগুলিকে 'None'-এ বরাদ্দ করতে ব্যবহৃত হয়।
-
একটি 'set_root' পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা বাইনারি গাছের মূল মান সেট করতে সাহায্য করে।
-
এটির একটি 'insert_at_right' পদ্ধতি রয়েছে যা গাছের ডান নোডে উপাদান যোগ করতে সাহায্য করে।
-
এটিতে একটি 'insert_at_left' পদ্ধতি রয়েছে যা গাছের বাম নোডগুলিতে উপাদান যোগ করতে সাহায্য করে।
-
'inorder_traversal' নামে আরেকটি পদ্ধতি যা অর্ডার ট্রাভার্সাল করে।
-
'সার্চ_এলেম' নামের একটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা একটি নির্দিষ্ট উপাদান অনুসন্ধানে সহায়তা করে।
-
'print_left_part' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা কনসোলে বাইনারি ট্রির শুধুমাত্র বাম অংশ প্রদর্শন করতে সাহায্য করে।
-
একটি দৃষ্টান্ত তৈরি করা হয়েছে এবং 'কোনটি নয়'-কে বরাদ্দ করা হয়েছে।
-
যে ক্রিয়াকলাপটি সম্পাদন করা প্রয়োজন তার জন্য ব্যবহারকারীর ইনপুট নেওয়া হয়৷
-
ব্যবহারকারীর পছন্দের উপর নির্ভর করে, অপারেশন করা হয়।• প্রাসঙ্গিক আউটপুট কনসোলে প্রদর্শিত হয়।