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

C++ में N-Ary ट्री की गहराई (Depth of N-Ary Tree)


आइए पहले उस स्ट्रक्ट को परिभाषित करें जो एक ट्री नोड को दर्शाता है जिसमें एक कैरेक्टर key और Node * का वेक्टर होता है।

struct Node{ 
    char key; 
    vector<Node *> children; 
};

इसके बाद हम createNode(int key) फंक्शन बनाते हैं जो एक int key मान लेता है और इसे नोड के key सदस्य को असाइन करता है। फंक्शन बने हुए स्ट्रक्ट नोड का पॉइंटर वापस करता है।

Node *createNode(int key){ 
    Node *node = new Node; 
    node->key = key; 
    return node; 
}

हमारा depthOfTree(struct Node* root) फंक्शन रूट नोड को पैरामीटर के रूप में लेता है। यदि रूट NULL है तो गहराई 0 वापस की जाती है।

int depthOfTree(struct Node *root){ 
    if (root==NULL) 
        return 0;

हम फिर maxDepth वेरिएबल को परिभाषित करते हैं और इसका मान 0 असाइन करते हैं। हम फिर ट्री के सभी चाइल्ड पर पुनरावृति करते हैं और प्रत्येक रिकर्सन पर maxDepth बढ़ाते हैं। एक बार आधार स्थिति पूरी हो जाने और रिकर्सन समाप्त हो जाने पर हम फिर maxDepth वापस करते हैं।

int depthOfTree(struct Node *root){ 
    if (root==NULL) 
        return 0; 
    int maxDepth = 0; 
    for(auto i: root->children){ 
        maxDepth = depthOfTree(i) + 1; 
    } 
    return maxDepth; 
}

उदाहरण

N-Ary ट्री की गहराई खोजने के लिए निम्नलिखित कार्यान्वयन देखें:

#include <iostream> 
#include <vector> 
using namespace std; 

struct Node{ 
    char key; 
    vector<Node *> children; 
}; 

Node *createNode(int key){ 
    Node *node = new Node; 
    node->key = key; 
    return node; 
} 

int depthOfTree(struct Node *root){ 
    if (root==NULL) 
        return 0; 
    int maxDepth = 0; 
    for(auto i: root->children){ 
        maxDepth = depthOfTree(i) + 1; 
    } 
    return maxDepth; 
} 

int main(){ 
    Node *root = createNode('S'); 
    (root->children).push_back(createNode('O')); 
    (root->children).push_back(createNode('A')); 
    (root->children).push_back(createNode('D')); 
    (root->children).push_back(createNode('N')); 
    (root->children[0]->children).push_back(createNode('L')); 
    (root->children[0]->children).push_back(createNode('I')); 
    (root->children[2]->children).push_back(createNode('R')); 
    (root->children[3]->children).push_back(createNode('C')); 
    (root->children[3]->children).push_back(createNode('H')); 
    (root->children[3]->children).push_back(createNode('I')); 
    cout << "The depth of the n-ary tree is " << depthOfTree(root) << endl; 
    return 0; 
}

आउटपुट

उपरोक्त कोड निम्नलिखित आउटपुट देगा:

The depth of the n-ary tree is 2

  1. C++ में बाइनरी ट्री की न्यूनतम गहराई C++ में बाइनरी ट्री की न्यूनतम गहराई

    समस्या विवरण मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें उस ट्री की न्यूनतम गहराई ज्ञात करनी है। जैसा कि हम जानते हैं, न्यूनतम गहराई रूट नोड से निकटतम लीफ नोड तक के सबसे छोटे पथ पर नोड्स की संख्या है। उदाहरण यदि इनपुट ट्री है: तो आउटपुट होगा 2 हल करने का दृष्टिकोण इस समस्या को हल करने के लिए निम

  1. C++ में बाइनरी ट्री कैमरे C++ में बाइनरी ट्री कैमरे

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हम ट्री के नोड्स पर कैमरे लगाते हैं। अब प्रत्येक कैमरा एक नोड पर अपने माता-पिता, स्वयं और अपने बच्चों की निगरानी कर सकता है। हमें ट्री के सभी नोड्स की निगरानी के लिए आवश्यक कैमरों की न्यूनतम संख्या ज्ञात करनी है। यदि इनपुट है - तो आउटपुट 1 होगा, क्योंकि सभी क

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

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