যখন একটি টারনারি ট্রি থেকে একটি দ্বিগুণ লিঙ্কযুক্ত তালিকা তৈরি করার প্রয়োজন হয়, তখন একটি 'নোড' শ্রেণী তৈরি করতে হবে। এই ক্লাসে, দুটি বৈশিষ্ট্য রয়েছে, নোডে থাকা ডেটা এবং লিঙ্ক করা তালিকার পরবর্তী নোডে অ্যাক্সেস।
আরেকটি 'লিঙ্কড_লিস্ট' ক্লাস তৈরি করতে হবে যার একটি ইনিশিয়ালাইজেশন ফাংশন থাকবে, এবং নোডের হেডটি 'কোনও নয়'-এ আরম্ভ করা হবে।
একটি দ্বিগুণ লিঙ্কযুক্ত তালিকায়, নোডগুলিতে পয়েন্টার রয়েছে। বর্তমান নোডের পরবর্তী নোডের পাশাপাশি আগের নোডের জন্য একটি পয়েন্টার থাকবে। তালিকার শেষ মানটির পরবর্তী পয়েন্টারে 'NULL' মান থাকবে। এটি উভয় দিক দিয়ে অতিক্রম করা যেতে পারে।
একাধিক পদ্ধতি ব্যবহারকারী দ্বারা সংজ্ঞায়িত করা হয় প্রদত্ত দ্বিগুণ লিঙ্কযুক্ত তালিকাটিকে একটি ত্রিদেশীয় গাছে রূপান্তর করতে এবং নোডের মানগুলি প্রিন্ট করার জন্য৷
নীচে একই −
এর জন্য একটি প্রদর্শন রয়েছে৷উদাহরণ
class Node:
def __init__(self, my_data):
self.right = None
self.data = my_data
self.left = None
self.mid = None
class ternary_tree_to_list:
def __init__(self):
self.root = None
self.head = None
self.tail = None
def convert_ternary_tree_to_list(self, node_val):
if node_val is None:
return
left = node_val.left;
mid = node_val.mid;
right = node_val.right;
if (self.head == None) :
self.head = self.tail = node_val
node_val.middle = None
self.head.left = None
self.head.right = None
else:
self.tail.right = node_val
node_val.left = self.tail
node_val.mid = None
self.tail = node_val
self.tail.right = None
self.convert_ternary_tree_to_list(left)
self.convert_ternary_tree_to_list(mid)
self.convert_ternary_tree_to_list(right)
def print_it(self):
curr = self.head
if (self.head == None):
print("The list is empty")
return
print("The nodes are :")
while curr != None:
print(curr.data)
curr = curr.right
my_instance = ternary_tree_to_list()
print("Elements are being added to the list")
my_instance.root = Node(10)
my_instance.root.left = Node(14)
my_instance.root.mid = Node(24)
my_instance.root.right = Node(17)
my_instance.root.left.left = Node(22)
my_instance.root.left.mid = Node(23)
my_instance.root.mid.left = Node(24)
my_instance.root.mid.mid = Node(28)
my_instance.root.mid.right = Node(30)
my_instance.root.right.left = Node(45)
my_instance.root.right.mid = Node(50)
my_instance.root.right.right = Node(80)
my_instance.convert_ternary_tree_to_list(my_instance.root)
my_instance.print_it() আউটপুট
Elements are being added to the list The nodes are : 10 14 22 23 24 24 28 30 17 45 50 80
ব্যাখ্যা
- 'নোড' ক্লাস তৈরি করা হয়েছে।
- প্রয়োজনীয় বৈশিষ্ট্য সহ আরেকটি ক্লাস তৈরি করা হয়েছে।
- 'convert_ternary_tree_to_list' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যেটি প্রদত্ত দ্বিগুণ লিঙ্কযুক্ত তালিকাটিকে একটি ত্রিনারি ট্রিতে রূপান্তর করতে ব্যবহৃত হয়।
- 'print_it' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিঙ্ক করা তালিকার নোডগুলি প্রদর্শন করে।
- 'ternary_tree_to_list' ক্লাসের একটি অবজেক্ট তৈরি করা হয়, এবং দ্বিগুণ লিঙ্কযুক্ত তালিকাটিকে একটি টারনারি ট্রিতে রূপান্তর করার জন্য পদ্ধতিগুলিকে বলা হয়৷
- একটি 'init' পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যে রুট, হেড, এবং টেইল নোডগুলি দ্বিগুণভাবে লিঙ্কযুক্ত তালিকার সাথে নেই।
- 'convert_ternary_tree_to_list' পদ্ধতিটিকে বলা হয়।
- এটি দ্বিগুণ লিঙ্কযুক্ত তালিকার মাধ্যমে পুনরাবৃত্তি করে, এবং এটিকে একটি ত্রিমুখী গাছে রূপান্তরিত করে।
- এটি 'print_it' পদ্ধতি ব্যবহার করে কনসোলে প্রদর্শিত হয়।