বাইনারি ট্রি থেকে ডাবলি লিংকড লিস্ট
যখন একটি দেওয়া বাইনারি ট্রিকে ডাবলি লিংকড লিস্টে রূপান্তর করতে হয়, তখন একটি 'Node' ক্লাস তৈরি করতে হয়। এই ক্লাসে দুটি অ্যাট্রিবিউট থাকে, নোডে উপস্থিত ডেটা এবং লিংকড লিস্টের পরবর্তী নোডে অ্যাক্সেস।
একটি অন্য 'linked_list' ক্লাস তৈরি করতে হবে যাতে একটি ইনিশিয়ালাইজেশন ফাংশন থাকে এবং নোডের হেডটি 'None' হিসেবে আরম্ভ করা হয়।
একটি ডাবলি লিংকড লিস্টে, নোডগুলোর পয়েন্টার থাকে। বর্তমান নোডটির পরবর্তী নোড এবং পূর্ববর্তী নোড দুটোর পয়েন্টার থাকে। তালিকার শেষ মানটির नेक्सট পয়েন্টারে 'NULL' মান থাকে। এটি উভয় দিকেই ট্রাভার্স করা যায়।
বাইনারি ট্রি একটি নন-লিনিয়ার ডেটা স্ট্রাকচার, যাতে একটি রুট নোড থাকে এবং রুট ছাড়া প্রতিটি নোডের একটি প্যারেন্ট নোড থাকতে পারে। একটি বাইনারি ট্রি নোডে সর্বোচ্চ দুটি চাইল্ড থাকতে পারে।
ব্যবহারকারী দ্বারা একাধিক মেথড সংজ্ঞায়িত করা হয় একটি দেওয়া বাইনারি ট্রিকে ডাবলি লিংকড লিস্টে রূপান্তর করতে এবং নোড মানগুলো প্রিন্ট করতে।
উদাহরণ
class Node:
def __init__(self, my_data):
self.right = None
self.data = my_data
self.left = None
class binary_tree_to_list:
def __init__(self):
self.root = None
self.head = None
self.tail = None
def convert_tree_to_list(self, node_val):
if node_val is None:
return
self.convert_tree_to_list(node_val.left)
if (self.head == None):
self.head = self.tail = node_val
else:
self.tail.right = node_val
node_val.left = self.tail
self.tail = node_val
self.convert_tree_to_list(node_val.right)
def print_it(self):
curr = self.head
if (self.head == None):
print("তালিকা খালি")
return
print("নোডগুলো:")
while curr != None:
print(curr.data)
curr = curr.right
my_instance = binary_tree_to_list()
print("তালিকায় উপাদান যোগ করা হচ্ছে")
my_instance.root = Node(10)
my_instance.root.left = Node(14)
my_instance.root.right = Node(17)
my_instance.root.left.left = Node(22)
my_instance.root.left.right = Node(29)
my_instance.root.right.left = Node(45)
my_instance.root.right.right = Node(80)
my_instance.convert_tree_to_list(my_instance.root)
my_instance.print_it()
আউটপুট
তালিকায় উপাদান যোগ করা হচ্ছে নোডগুলো: 22 14 29 10 45 17 80
ব্যাখ্যা
- 'Node' ক্লাস তৈরি করা হয়েছে।
- প্রয়োজনীয় অ্যাট্রিবিউটসহ অন্য একটি ক্লাস তৈরি করা হয়েছে।
- 'convert_tree_to_list' নামক একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা প্রদত্ত বাইনারি ট্রিকে ডাবলি লিংকড লিস্টে রূপান্তর করতে ব্যবহৃত হয়।
- 'print_it' নামক অন্য একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টের নোডগুলো প্রদর্শন করে।
- 'binary_tree_to_list' ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে এবং মেথডগুলো সেটিতে কল করা হয়েছে ট্রিকে ডাবলি লিংকড লিস্টে রূপান্তর করতে।
- একটি 'init' মেথড সংজ্ঞায়িত করা হয়েছে, যা ডাবলি লিংকড লিস্টের রুট, হেড এবং টেইল নোডকে None করে।
- 'convert_tree_to_list' মেথডটি কল করা হয়েছে।
- এটি বাইনারি ট্রি 통해서 ইটারেট করে এবং এটিকে ডাবলি লিংকড লিস্টে রূপান্তর করে।
- এটি 'print_it' মেথড ব্যবহার করে কনসোলে প্রদর্শিত হয়েছে।