কম্পিউটার

একটি প্রদত্ত বাইনারি ট্রিকে C++ এ দ্বিগুণ লিঙ্কযুক্ত তালিকায় (সেট 1) রূপান্তর করুন


এই টিউটোরিয়ালে, আমরা একটি বাইনারি ট্রিকে দ্বিগুণ লিঙ্কযুক্ত তালিকায় রূপান্তর করার একটি প্রোগ্রাম নিয়ে আলোচনা করব৷

এর জন্য আমাদের একটি বাইনারি গাছ দেওয়া হবে। আমাদের কাজ হল এটিকে দ্বিগুণ লিঙ্কযুক্ত তালিকায় রূপান্তর করা যাতে বাম এবং ডান পয়েন্টারগুলি আগের এবং পরবর্তী পয়েন্টার হয়ে যায়। এছাড়াও দ্বিগুণ লিঙ্কযুক্ত তালিকার অনুক্রমিক ক্রম অবশ্যই বাইনারি ট্রির ইনঅর্ডার ট্রাভার্সালের সমান হতে হবে।

এই জন্য আমরা একটি খুব সোজা এগিয়ে পদ্ধতি আছে. আমরা দ্বিগুণ লিঙ্কযুক্ত তালিকার নোডগুলিকে ক্রমানুসারে বাইনারি ট্রিটি অতিক্রম করব এবং অবশেষে বাম এবং ডানকে যথাক্রমে পূর্ববর্তী এবং পরবর্তী নোড হিসাবে তৈরি করব৷

উদাহরণ

#include <iostream>
using namespace std;
//node structure of binary tree
struct node{
   int data;
   node* left;
   node* right;
};
//traversing and making nodes for
//doubly linked list
void binarytodll(node *root, node **head){
   if (root == NULL)
      return;
   static node* prev = NULL;
   //converting left subtree
   binarytodll(root->left, head);
   if (prev == NULL)
      *head = root;
   else {
      root->left = prev;
      prev->right = root;
   }
   prev = root;
   //converting right subtree
   binarytodll(root->right, head);
}
//allocating a new node
node* newNode(int data) {
   node* new_node = new node;
   new_node->data = data;
   new_node->left = new_node->right = NULL;
   return (new_node);
}
//printing nodes of doubly linked list
void print_dll(node *node){
   while (node!=NULL) {
      cout << node->data << " ";
      node = node->right;
   }
}
int main(){
   node *root = newNode(10);
   root->left = newNode(12);
   root->right = newNode(15);
   root->left->left = newNode(25);
   root->left->right = newNode(30);
   root->right->left = newNode(36);
   node *head = NULL;
   binarytodll(root, &head);
   print_dll(head);
   return 0;
}

আউটপুট

25 12 30 10 36 15

  1. C++ এ বাইনারি ট্রিতে লিঙ্ক করা তালিকা

  2. C++ এ সর্বাধিক বাইনারি ট্রি

  3. C++ এ লিঙ্ক করা তালিকায় বাইনারি ট্রি সমতল করুন

  4. একটি প্রদত্ত বাইনারি ট্রি C++ এ SumTree কিনা তা পরীক্ষা করুন