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

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


इस लेख में, हम N-ary ट्री में दिए गए नोड के सिबलिंग्स की संख्या निर्धारित करने के लिए पूरी जानकारी प्रदान करेंगे। हमें उपयोगकर्ता द्वारा दिए गए key के मान के साथ नोड के सिबलिंग्स ढूंढने हैं; यदि यह मौजूद नहीं है तो आउटपुट -1 होगा। केवल एक दृष्टिकोण है जिसका हम उपयोग कर सकते हैं:

सरल दृष्टिकोण

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

उदाहरण

#include <bits/stdc++.h> using namespace std; class Node {  // हमारे ट्री के नोड्स की संरचना public:     int key;     vector<Node*> child;     Node(int data){         key = data;     } }; int main(){    //     ट्री बनाना     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 से मेल खाता है, तो हमारा फ्लैग ट्रिगर होता है, और हमारे उत्तर चर को चाइल्ड.size() - 1 का मान दिया गया है, और फिर हम फॉर लूप से बाहर निकलते हैं अब हम जांचते हैं कि फ्लैग ट्रिगर हुआ है या नहीं। यदि यह ट्रिगर हुआ है, तो हम व्हाइल लूप से बाहर आते हैं। उसके बाद, हम उत्तर प्रिंट करते हैं अब यदि दिए गए मान वाला नोड मौजूद नहीं है, तो हमारा उत्तर चर नहीं बदलेगा, और आउटपुट -1 होगा। यदि रूट मान दिए गए के समान मान रखता है, तो एक if स्टेटमेंट है जो इसकी जांच करता है और हमारा प्रोग्राम चलाता है।

निष्कर्ष

इस लेख में, हम N-ary ट्री में दिए गए नोड के सिबलिंग्स की संख्या ज्ञात करने की समस्या को O(N) समय जटिलता में हल करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और पूरा दृष्टिकोण भी सीखा जिससे हमने इस समस्या को हल किया। हम इसी प्रोग्राम को C, Java, Python और अन्य भाषाओं में लिख सकते हैं।


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

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

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

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

  1. C++ में बाइनरी ट्री में दिए गए नोड का मिरर ढूंढना C++ में बाइनरी ट्री में दिए गए नोड का मिरर ढूंढना

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