Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी++ में एन-आरी ट्री का दर्पण

समस्या कथन

एक पेड़ को देखते हुए जहां हर नोड में बच्चों की संख्या में परिवर्तन होता है, पेड़ को उसके दर्पण में परिवर्तित करें

उदाहरण

अगर 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

  1. सी++ में एन-आरी ट्री लेवल ऑर्डर ट्रैवर्सल

    मान लीजिए कि हमारे पास एक n-ary ट्री है, हमें इसके नोड्स के मानों के लेवल ऑर्डर ट्रैवर्सल को वापस करना होगा। नैरी-ट्री इनपुट क्रमांकन उनके स्तर के क्रम ट्रैवर्सल में दर्शाया गया है। यहां बच्चों के प्रत्येक समूह को शून्य मान से अलग किया जाता है (उदाहरण देखें)। तो निम्नलिखित पेड़ को [1,null,3,2,4,null

  1. सी ++ में बिना रिकर्सन के एन-आरी ट्री का प्रीऑर्डर ट्रैवर्सल

    इस समस्या में हमें एक N-ary Tree दिया जाता है। हमारा काम ट्री के प्रीऑर्डर ट्रैवर्सल को प्रिंट करना है। सबसे पहले, आइए कुछ बुनियादी शब्दावली सीखें, एन-आरी ट्री एक पेड़ है जिसमें सभी नोड्स में अधिकतम एन चाइल्ड नोड्स हो सकते हैं। उदाहरण 2-एरी (बाइनरी) ट्री में अधिकतम 2 चाइल्ड नोड होते हैं। प्रीऑर्ड

  1. C++ में DFS का उपयोग करके n-ary ट्री के सभी लीफ नोड्स प्रिंट करें

    इस समस्या में, हमें एक 2-डी सरणी दी जाती है जिसमें एक n-ary का किनारा होता है जहां किनारा n-ary पेड़ के किनारे को परिभाषित करता है। हमें बनाए गए एरी ट्री के सभी लीफ नोड्स को प्रिंट करना होगा। एन-आरी ट्री एक पेड़ है जिसमें अधिकतम n बच्चे हैं यानी एक नोड में 1, 2, ...n चाइल्ड नोड्स हो सकते हैं। आइए