কম্পিউটার টিউটোরিয়াল

পাইথন প্রোগ্রাম: বাইনারি ট্রিকে ডাবলি লিংকড লিস্টে রূপান্তর

বাইনারি ট্রি থেকে ডাবলি লিংকড লিস্ট

যখন একটি দেওয়া বাইনারি ট্রিকে ডাবলি লিংকড লিস্টে রূপান্তর করতে হয়, তখন একটি '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' মেথড ব্যবহার করে কনসোলে প্রদর্শিত হয়েছে।
  1. বাইনারি সার্চ ট্রিকে সিঙ্গলি লিঙ্কড লিস্টে রূপান্তর C++-এ

  2. পাইথনে বাইনারি ট্রি-তে BST আছে কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে বাইনারি ট্রি-তে লিংকড লিস্ট আছে কিনা যাচাই করার প্রোগ্রাম

  4. পাইথনে লিংকড লিস্টকে জিগ-জ্যাগ বাইনারি ট্রিতে রূপান্তর করার প্রোগ্রাম