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

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

এই টিউটোরিয়ালে আমরা একটি বাইনারি ট্রিকে সার্কুলার ডাবলি লিংকড লিস্ট-এ রূপান্তর করার একটি প্রোগ্রাম নিয়ে আলোচনা করব।

এখানে একটি বাইনারি ট্রি দেওয়া থাকবে। আমাদের কাজ হবে বাম এবং ডান নোডগুলোকে যথাক্রমে বাম এবং ডান উপাদান-এ রূপান্তর করা। এবং বাইনারি ট্রির ইনঅর্ডার কে সার্কুলার লিংকড লিস্টের ক্রম ধরা হবে।

উদাহরণ

#include <iostream> 
using namespace std; 
// বাইনারি ট্রির নোড স্ট্রাকচার 
struct Node { 
    struct Node *left, *right; 
    int data; 
}; 
// রাইটলিস্টকে লেফটলিস্টের শেষে অ্যাপেন্ড করা 
Node* concatenate(Node* leftList, Node* rightList) { 
    // যদি একটি লিস্ট খালি হয়, অন্যটি রিটার্ন করুন 
    if (leftList == NULL) 
        return rightList; 
    if (rightList == NULL) 
        return leftList; 
    Node* leftLast = leftList->left; 
    Node* rightLast = rightList->left; 
    // লেফটলিস্টকে রাইটলিস্টের সাথে সংযুক্ত করা 
    leftLast->right = rightList; 
    rightList->left = leftLast; 
    leftList->left = rightLast; 
    rightLast->right = leftList; 
    return leftList; 
} 
// সার্কুলার লিংকড লিস্ট-এ রূপান্তর করে হেড রিটার্ন 
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); 
} 
// সার্কুলার লিংকড লিস্ট প্রদর্শন 
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"; 
} 
// নতুন নোড তৈরি করে ঠিকানা রিটার্ন 
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 ট্রিকে বাইনারি ট্রিতে এনকোড এবং ডিসিরিয়ালাইজ করা

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

  3. C++-এ সোর্টেড লিস্টকে বাইনারি সার্চ ট্রি (BST) তে রূপান্তর

  4. C++-এ লিংকড লিস্ট বাইনারি ট্রিতে আছে কিনা চেক করা