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