কম্পিউটার

একটি বাইনারি ট্রিকে C++ এ একটি সার্কুলার ডাবললি লিঙ্ক তালিকায় রূপান্তর করুন


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

এই জন্য, আমাদের একটি বাইনারি গাছ প্রদান করা হবে. আমাদের কাজ হবে বাম এবং ডান নোডগুলিকে যথাক্রমে বাম এবং ডান উপাদানগুলিতে রূপান্তর করা। এবং বৃত্তাকার লিঙ্কযুক্ত তালিকার ক্রম ক্রম হিসাবে বাইনারি গাছের ক্রম ধরুন

উদাহরণ

#include<iostream>
using namespace std;
//node structure of the binary tree
struct Node{
   struct Node *left, *right;
   int data;
};
//appending rightlist to the end of leftlist
Node *concatenate(Node *leftList, Node *rightList){
   //if one list is empty return the other list
   if (leftList == NULL)
      return rightList;
   if (rightList == NULL)
      return leftList;
   Node *leftLast = leftList->left;
   Node *rightLast = rightList->left;
   //connecting leftlist to rightlist
   leftLast->right = rightList;
   rightList->left = leftLast;
   leftList->left = rightLast;
   rightLast->right = leftList;
   return leftList;
}
//converting to circular linked list and returning the head
Node *bTreeToCList(Node *root){
   if (root == NULL)
      return NULL;
   Node *left = bTreeToCList(root->left);
   Node *right = bTreeToCList(root->right);
   root->left = root->right = root;
   return concatenate(concatenate(left, root), right);
}
//displaying circular linked list
void print_Clist(Node *head){
   cout << "Circular Linked List is :\n";
   Node *itr = head;
   do{
      cout << itr->data <<" ";
      itr = itr->right;
   }
   while (head!=itr);
      cout << "\n";
}
//creating new node and returning address
Node *newNode(int data){
   Node *temp = new Node();
   temp->data = data;
   temp->left = temp->right = NULL;
   return temp;
}
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 = bTreeToCList(root);
   print_Clist(head);
   return 0;
}

আউটপুট

Circular Linked List is :
25 12 30 10 36 15

  1. C++ এ N-ary Tree থেকে Binary Tree এনকোড করুন

  2. C++ এ বাইনারি ট্রি ক্যামেরা

  3. সাজানো তালিকাকে C++ এ বাইনারি সার্চ ট্রিতে রূপান্তর করুন

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