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

C++ का उपयोग करके N-ary ट्री में दिए गए नोड के भाई-बहनों की संख्या ज्ञात कीजिए

इस लेख में, हम n-ary पेड़ में किसी दिए गए नोड के भाई-बहनों की संख्या निर्धारित करने के लिए पूरी जानकारी प्रदान करेंगे। हमें उपयोगकर्ता द्वारा दिए गए कुंजी के मान के साथ नोड के भाई-बहनों को खोजने की आवश्यकता है; यदि यह गैर है, तो -1 के रूप में आउटपुट करें। केवल एक ही तरीका है जिसका हम उपयोग कर सकते हैं -

सरल तरीका

इस दृष्टिकोण में, हम सभी नोड्स के माध्यम से जाएंगे और जांचेंगे कि क्या बच्चे के पास उपयोगकर्ता के समान मूल्य है। यदि यह मौजूद है, तो हम कई बच्चों को जवाब देते हैं - 1(दिया गया मान)।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Node {  // structure of nodes of our tree.
public:
    int key;
    vector<Node*> child;
    Node(int data){
        key = data;
    }
};
int main(){
   //     Building The Tree
    Node* Base = new Node(50);
    (Base->child).push_back(new Node(2));
    (Base->child).push_back(new Node(30));
    (Base->child).push_back(new Node(14));
    (Base->child).push_back(new Node(60));
    (Base->child[0]->child).push_back(new Node(15));
    (Base->child[0]->child).push_back(new Node(25));
    (Base->child[0]->child[1]->child).push_back(new Node(70));
    (Base->child[0]->child[1]->child).push_back(new Node(100));
    (Base->child[1]->child).push_back(new Node(6));
    (Base->child[1]->child).push_back(new Node(1));
    (Base->child[2]->child).push_back(new Node(7));
    (Base->child[2]->child[0]->child).push_back(new Node(17));
    (Base->child[2]->child[0]->child).push_back(new Node(99));
    (Base->child[2]->child[0]->child).push_back(new Node(27));
    (Base->child[3]->child).push_back(new Node(16));
    int x = 30;
    queue<Node*> q;
    q.push(Base);
    bool flag = 0;
    int answer = -1;
    if(Base -> key != x){
        while(!q.empty()){
            auto parent = q.front();
            q.pop();
            for(int i = 0; i < parent -> child.size(); i++){
                if(parent -> child[i] -> key == x){
                    answer = parent -> child.size() - 1;
                    flag = 1;
                    break;
                }
                q.push(parent -> child[i]);
            }
            if(flag)
                break;
        }
        cout << answer << "\n";
    }
    else
        cout << "0\n";
    return 0;
}

आउटपुट

3

उपरोक्त कार्यक्रम की व्याख्या

इस कार्यक्रम में, हम एक कतार बनाए रखते हैं जिसके अंदर अनजान नोड्स होंगे, और विज़िट किए गए नोड को पॉप किया जाएगा। अब, जब हम एक नोड का पता लगाते हैं, तो हम उसके बच्चों का पता लगाते हैं, और यदि बच्चे का मान x से मेल खाता है, तो हमारा ध्वज ट्रिगर हो जाता है, और हमारे उत्तर चर को बच्चे का मान दिया गया है। आकार () - 1, और फिर हम लूप के माध्यम से तोड़ते हैं अब हम जांचते हैं कि झंडा चालू है या नहीं। यदि इसे ट्रिगर किया जाता है, तो हम थोड़ी देर के लूप से बाहर आ जाते हैं। उसके बाद, हम उत्तर को अभी प्रिंट करते हैं यदि दिए गए मान के साथ कोई नोड मौजूद नहीं है, तो हमारा उत्तर चर नहीं बदलेगा, और आउटपुट -1 होगा। यदि मूल मान का वही मान है जो दिया गया है, तो एक if कथन है जो इसकी जाँच करता है और हमारे प्रोग्राम को चलाता है।

निष्कर्ष

इस लेख में, हम n-ary ट्री में दिए गए नोड के भाई-बहनों की संख्या ज्ञात करने के लिए एक समस्या का समाधान करते हैं ओ (एन) समय जटिलता में। हमने इस समस्या के लिए C++ प्रोग्राम और पूरा तरीका भी सीखा जिसके द्वारा हमने इस समस्या को हल किया। हम उसी प्रोग्राम को अन्य भाषाओं जैसे C, java, python, और अन्य भाषाओं में लिख सकते हैं।


  1. C++ . का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात कीजिए

    बिंदु X और Y के बीच मध्यवर्ती ट्रेन स्टेशनों की संख्या n है। गिनें कि अलग-अलग तरीकों से ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई भी दो स्टेशन एक दूसरे के बगल में नहीं हैं। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या का पता लगाने के लिए हर संभव तरीके की व्याख्या क

  1. C++ का प्रयोग करते हुए दिए गए बिंदुओं से संभव चतुर्भुजों की संख्या ज्ञात कीजिए

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

  1. C++ में बाइनरी ट्री में दिए गए नोड का दर्पण खोजें

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। हमारा कार्य बाइनरी ट्री में किसी दिए गए नोड का दर्पण खोजना है। हमें एक नोड दिया जाएगा, और उस नोड की मिरर इमेज को विपरीत सबट्री में ढूंढा जाएगा। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट आउटपुट mirror of B is E. समाधान दृष्टिकोण समस्या को हल