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

C++ में n-ary ट्री का मिरर


समस्या कथन

एक ट्री दिया गया है जहां हर नोड में वेरिएबल संख्या में बच्चे हैं, ट्री को उसके मिरर में बदलें

उदाहरण

यदि n-ary ट्री है -

C++ में n-ary ट्री का मिरर

तो इसका मिरर है -

C++ में n-ary ट्री का मिरर

उदाहरण

#include 
using namespace std;

struct node {
    int data;
    vectorchild;
};

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;
    }
    queueq;
    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; ichild.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++ में N-एरी ट्री लेवल ऑर्डर ट्रैवर्सल C++ में N-एरी ट्री लेवल ऑर्डर ट्रैवर्सल

    मान लीजिए हमारे पास एक N-एरी ट्री है। हमें इसके नोड्स के मानों का लेवल ऑर्डर ट्रैवर्सल लौटाना है। N-एरी ट्री का इनपुट सीरियलाइजेशन उनके लेवल ऑर्डर ट्रैवर्सल में दर्शाया गया है, जहाँ बच्चों के प्रत्येक समूह को नल मान से अलग किया जाता है। उदाहरण: ट्री [1,null,3,2,4,null,5,6] के लिए आउटपुट [[1],[3,2,

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

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

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

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