যখন একটি বাইনারি অনুসন্ধান গাছে ক্ষুদ্রতম এবং বৃহত্তম উপাদানগুলি খুঁজে বের করার প্রয়োজন হয়, তখন একটি বাইনারি ট্রি শ্রেণী তৈরি করা হয় এবং গাছে উপাদান যুক্ত করার পদ্ধতি, একটি নির্দিষ্ট নোডের জন্য অনুসন্ধান করা হয়। ক্লাসের একটি উদাহরণ তৈরি করা হয়, এবং এই পদ্ধতিগুলির সাথে ব্যবহার করা হয়।
নীচে একই -
এর একটি প্রদর্শন রয়েছে৷উদাহরণ
class BST_Node:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
self.parent = None
def insert_elem(self, node):
if self.key > node.key:
if self.left is None:
self.left = node
node.parent = self
else:
self.left.insert_elem(node)
elif self.key < node.key:
if self.right is None:
self.right = node
node.parent = self
else:
self.right.insert_elem(node)
def search_node(self, key):
if self.key > key:
if self.left is not None:
return self.left.search_node(key)
else:
return None
elif self.key < key:
if self.right is not None:
return self.right.search_node(key)
else:
return None
return self
class BSTree:
def __init__(self):
self.root = None
def add_elem(self, key):
new_node = BST_Node(key)
if self.root is None:
self.root = new_node
else:
self.root.insert_elem(new_node)
def search_node(self, key):
if self.root is not None:
return self.root.search_node(key)
def get_smallest_elem(self):
if self.root is not None:
current = self.root
while current.left is not None:
current = current.left
return current.key
def get_largest_elem(self):
if self.root is not None:
current = self.root
while current.right is not None:
current = current.right
return current.key
my_instance = BSTree()
print('Menu (Assume no duplicate keys)')
print('add ')
print('smallest')
print('largest')
print('quit')
while True:
my_input = input('What operation would you perform ? ').split()
operation = my_input[0].strip().lower()
if operation == 'add':
key = int(my_input[1])
my_instance.add_elem(key)
if operation == 'smallest':
smallest = my_instance.get_smallest_elem()
print('The smallest element is : {}'.format(smallest))
if operation == 'largest':
largest = my_instance.get_largest_elem()
print('The largest element is : {}'.format(largest))
elif operation == 'quit':
break আউটপুট
Menu (Assume no duplicate keys) add <key> smallest largest quit What operation would you perform ? add 5 What operation would you perform ? add 8 What operation would you perform ? add 11 What operation would you perform ? add 0 What operation would you perform ? add 3 What operation would you perform ? smallest The smallest element is : 0 What operation would you perform ? largest The largest element is : 11 What operation would you perform ? quit’
ব্যাখ্যা
-
প্রয়োজনীয় গুণাবলী সহ 'BST_Node' ক্লাস তৈরি করা হয়েছে।
-
এটির একটি 'init' ফাংশন রয়েছে যা বাম, ডান এবং প্যারেন্ট নোডগুলিকে 'কোনও নয়' এ সেট করতে ব্যবহৃত হয়।
-
এটির একটি 'insert_element' পদ্ধতি রয়েছে যা বাইনারি ট্রিতে একটি উপাদান সন্নিবেশ করতে সাহায্য করে।
-
'অনুসন্ধান_নোড' নামে আরেকটি পদ্ধতি যা গাছে একটি নির্দিষ্ট নোডের জন্য অনুসন্ধান করে।
-
'BSTree' নামে আরেকটি ক্লাস সংজ্ঞায়িত করা হয়েছে, যেখানে রুটটি 'কোনও নয়' এ সেট করা আছে।
-
'add_elem' নামের একটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা গাছে উপাদান যোগ করে।
-
'সার্চ_নোড' নামে আরেকটি পদ্ধতি আছে যা গাছে একটি নির্দিষ্ট নোড খুঁজতে সাহায্য করে।
-
'get_smallest_node' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা গাছের সবচেয়ে ছোট নোড আনতে সাহায্য করে।
-
'get_largest_node' নামের আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা গাছের মধ্যে সবচেয়ে বড় নোড আনতে সাহায্য করে।
-
'BSTree' ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে।
-
ব্যবহারকারীর দ্বারা নির্বাচিত অপারেশনের উপর ভিত্তি করে, অপারেশনটি সম্পাদিত হয়।