যখন পুনরাবৃত্ত ব্যবহার করে একটি গাছে গভীরতার প্রথম অনুসন্ধান করার প্রয়োজন হয়, তখন একটি শ্রেণী সংজ্ঞায়িত করা হয়, এবং এটিতে পদ্ধতিগুলি সংজ্ঞায়িত করা হয় যা প্রথম প্রস্থ অনুসন্ধান করতে সহায়তা করে৷
নীচে একই −
এর জন্য একটি প্রদর্শন রয়েছে৷উদাহরণ
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 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(key)
if temp is not None:
return temp
if self.right is not None:
temp = self.right.search(key)
return temp
return None
def depth_first_search(self):
print('entering {}...'.format(self.key))
if self.left is not None:
self.left.depth_first_search()
print('at {}...'.format(self.key))
if self.right is not None:
self.right.depth_first_search()
print('leaving {}...'.format(self.key))
btree_instance = None
print('Menu (no duplicate keys)')
print('insert <data> at root')
print('insert <data> left of <data>')
print('insert <data> right of <data>')
print('dfs')
print('quit')
while True:
my_input = input('What would you like to do? ').split()
op = my_input[0].strip().lower()
if op == 'insert':
data = int(my_input[1])
new_node = BinaryTree_struct(data)
sub_op = my_input[2].strip().lower()
if sub_op == 'at':
btree_instance = new_node
else:
position = my_input[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 sub_op == 'left':
ref_node.insert_at_left(new_node)
elif sub_op == 'right':
ref_node.insert_at_right(new_node)
elif op == 'dfs':
print('depth-first search traversal:')
if btree_instance is not None:
btree_instance.depth_first_search()
print()
elif op == 'quit':
break আউটপুট
Menu (no duplicate keys) insert <data> at root insert <data> left of <data> insert <data> right of <data> dfs 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? dfs depth-first search traversal: entering 5... entering 6... at 6... leaving 6... at 5... entering 8... at 8... leaving 8... leaving 5... What would you like to do? quit Use quit() or Ctrl-D (i.e. EOF) to exit
ব্যাখ্যা
-
প্রয়োজনীয় গুণাবলী সহ 'BinaryTree_struct' ক্লাস তৈরি করা হয়েছে।
-
এটির একটি 'init' ফাংশন রয়েছে যা 'বাম' এবং 'ডান' নোডগুলিকে 'কোনও নয়' এ বরাদ্দ করতে ব্যবহৃত হয়।
-
'set_root' নামের আরেকটি পদ্ধতি গাছের মূল নির্দিষ্ট করার জন্য সংজ্ঞায়িত করা হয়েছে।
-
'insert_at_left' নামের আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা গাছের বাম দিকে নোড যোগ করতে সাহায্য করে।
-
'insert_at_right' নামের আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা গাছের ডানদিকে নোড যোগ করতে সাহায্য করে।
-
'অনুসন্ধান_এলেম' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা একটি নির্দিষ্ট উপাদান অনুসন্ধানে সহায়তা করে।
-
'depth_first_search' নামের একটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা বাইনারি ট্রিতে গভীরতার প্রথম অনুসন্ধান করতে সাহায্য করে।
-
ক্লাসের একটি ইন্সট্যান্স তৈরি করা হয়েছে এবং 'কোনটিই নয়'-কে বরাদ্দ করা হয়েছে।
-
একটি মেনু দেওয়া আছে।
-
যে ক্রিয়াকলাপটি সম্পাদন করা প্রয়োজন তার জন্য ব্যবহারকারীর ইনপুট নেওয়া হয়৷
-
ব্যবহারকারীর পছন্দের উপর নির্ভর করে, অপারেশন সঞ্চালিত হয়।
-
প্রাসঙ্গিক আউটপুট কনসোলে প্রদর্শিত হয়।