কম্পিউটার

পাইথন প্রোগ্রাম একটি টারনারি ট্রি থেকে দ্বিগুণ লিঙ্কযুক্ত তালিকা তৈরি করতে


যখন একটি টারনারি ট্রি থেকে একটি দ্বিগুণ লিঙ্কযুক্ত তালিকা তৈরি করার প্রয়োজন হয়, তখন একটি 'নোড' শ্রেণী তৈরি করতে হবে। এই ক্লাসে, দুটি বৈশিষ্ট্য রয়েছে, নোডে থাকা ডেটা এবং লিঙ্ক করা তালিকার পরবর্তী নোডে অ্যাক্সেস।

আরেকটি 'লিঙ্কড_লিস্ট' ক্লাস তৈরি করতে হবে যার একটি ইনিশিয়ালাইজেশন ফাংশন থাকবে, এবং নোডের হেডটি 'কোনও নয়'-এ আরম্ভ করা হবে।

একটি দ্বিগুণ লিঙ্কযুক্ত তালিকায়, নোডগুলিতে পয়েন্টার রয়েছে। বর্তমান নোডের পরবর্তী নোডের পাশাপাশি আগের নোডের জন্য একটি পয়েন্টার থাকবে। তালিকার শেষ মানটির পরবর্তী পয়েন্টারে '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' পদ্ধতি ব্যবহার করে কনসোলে প্রদর্শিত হয়।

  1. পাইথন প্রোগ্রাম n নোডের দ্বিগুণ লিঙ্কযুক্ত তালিকা তৈরি করে এবং এটিকে বিপরীত ক্রমে প্রদর্শন করে

  2. পাইথন প্রোগ্রাম n নোডের দ্বিগুণ লিঙ্কযুক্ত তালিকা তৈরি করে এবং নোডের সংখ্যা গণনা করে

  3. পাইথন প্রোগ্রাম একটি প্রদত্ত বাইনারি গাছকে দ্বিগুণ লিঙ্কযুক্ত তালিকায় রূপান্তর করতে

  4. পাইথনে বাইনারি অনুসন্ধান গাছের সাথে লিঙ্কযুক্ত তালিকা তৈরি করার প্রোগ্রাম