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

সি++ প্রোগ্রাম: n-ary ট্রির মিরর (Mirror) তৈরি করা


সমস্যা বিবরণ

একটি ট্রি দেওয়া আছে যেখানে প্রতিটি নোডে ভেরিয়েবল সংখ্যক চাইল্ড থাকে। এই ট্রিকে এর মিরর ইমেজে রূপান্তর করতে হবে।

উদাহরণ

যদি n-ary ট্রি থাকে:

সি++ প্রোগ্রাম: n-ary ট্রির মিরর (Mirror) তৈরি করা

তাহলে এর মিরর হবে:

সি++ প্রোগ্রাম: n-ary ট্রির মিরর (Mirror) তৈরি করা

সি++ কোড উদাহরণ

#include <bits/stdc++.h>
using namespace std;

struct node {
    int data;
    vector child;
};

node* newNode(int x) {
    node* temp = new node;
    temp->data = x;
    return temp;
}

void mirrorTree(node* root) {
    if (root == NULL) return;
    int n = root->child.size();
    if (n < 2) return;
    for (int i = 0; i < n; i++)
        mirrorTree(root->child[i]);
    reverse(root->child.begin(), root->child.end());
}

void printTree(node* root) {
    if (root == NULL) return;
    queue q;
    q.push(root);
    int level = 0;
    while (!q.empty()) {
        int n = q.size();
        ++level;
        cout << "Level " << level << ": ";
        while (n > 0) {
            node* p = q.front();
            q.pop();
            cout << p->data << " ";
            for (int i = 0; i < p->child.size(); i++)
                q.push(p->child[i]);
            n--;
        }
        cout << endl;
    }
}

int main() {
    node* root = newNode(20);
    (root->child).push_back(newNode(10));
    (root->child).push_back(newNode(15));
    (root->child[0]->child).push_back(newNode(1));
    (root->child[0]->child).push_back(newNode(2));
    (root->child[0]->child).push_back(newNode(3));
    (root->child[1]->child).push_back(newNode(4));
    cout << "Tree traversal before mirroring\n";
    printTree(root);
    mirrorTree(root);
    cout << "\nTree traversal after mirroring\n";
    printTree(root);
    return 0;
}

আউটপুট

Tree traversal before mirroring
Level 1: 20
Level 2: 10 15
Level 3: 1 2 3 4
Tree traversal after mirroring
Level 1: 20
Level 2: 15 10
Level 3: 4 3 2 1

  1. বাইনারি ট্রি প্রুনিং C++-এ

  2. N-ary ট্রি লেভেল অর্ডার ট্রাভার্সাল C++-এ

  3. C++-এ রিকার্শন ছাড়া N-এরি ট্রির প্রিঅর্ডার ট্রাভার্সাল (Preorder Traversal of N-ary Tree Without Recursion)

  4. C++-এ n-এরি ট্রির সব লিফ নোড DFS দিয়ে প্রিন্ট করা