সমস্যা বিবৃতি
একটি গাছ দেওয়া হয়েছে যেখানে প্রতিটি নোডে পরিবর্তনশীল সংখ্যক শিশু রয়েছে, গাছটিকে তার আয়নায় রূপান্তর করুন
উদাহরণ
যদি n-ary গাছ হয় −
তাহলে এর আয়না হল −
উদাহরণ
#include <bits/stdc++.h> using namespace std; struct node { int data; vector<node *>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<node *>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