इस लेख में, हम 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 और अन्य भाषाओं में लिख सकते हैं।