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

C++ में n-ary ट्री में दिए गए मान से अधिक नोड्स की संख्या

एक एन-आरी पेड़ और एक संख्या को देखते हुए, हमें दी गई संख्या से अधिक नोड्स की संख्या गिननी होगी। आइए एक उदाहरण देखें।

इनपुट

tree = [[4], [1, 2], [3, 5]]
n = 2

आउटपुट

3

n से अधिक मान वाले 3 नोड हैं।

एल्गोरिदम

  • एन-आरी ट्री को इनिशियलाइज़ करें।

  • गिनती को 0 से प्रारंभ करें।

  • जब आप एक नोड पाते हैं जिसका मान n से अधिक है, तो गिनती को 1 से बढ़ाएँ।

  • वर्तमान नोड के बच्चे प्राप्त करें।

  • सभी बच्चों पर पुनरावृति करें और नोड्स गिनने के लिए समान फ़ंक्शन को बार-बार कॉल करें।

  • गिनती वापस करें।

कार्यान्वयन

C++ में उपरोक्त एल्गोरिथम का कार्यान्वयन निम्नलिखित है

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   vector<Node*> child;
};
Node* getNewNode(int data) {
   Node* temp = new Node;
   temp->data = data;
   return temp;
}
int getGreaterElementsCount(Node* root, int n) {
   if (root == NULL)
      return 0;
   int count = 0;
   if (root->data > n) {
      count++;
   }
   int nodeChildrenCount = root->child.size();
   for (int i = 0; i < nodeChildrenCount; i++) {
      Node* child = root->child[i];
      count += getGreaterElementsCount(child, n);
   }
   return count;
}
int main() {
   Node* root = getNewNode(1);
   (root->child).push_back(getNewNode(2));
   (root->child).push_back(getNewNode(3));
   (root->child).push_back(getNewNode(4));
   (root->child[0]->child).push_back(getNewNode(5));
   (root->child[0]->child).push_back(getNewNode(5));
   (root->child[1]->child).push_back(getNewNode(6));
   (root->child[1]->child).push_back(getNewNode(6));
   (root->child[1]->child).push_back(getNewNode(7));
   (root->child[2]->child).push_back(getNewNode(8));
   (root->child[2]->child).push_back(getNewNode(8));
   (root->child[2]->child).push_back(getNewNode(9));
   int n = 2;
   cout << getGreaterElementsCount(root, n) << endl;
   return 0;
}

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।

10

  1. सी++ का उपयोग करके एन-आरी ट्री को पार करने के तरीकों की संख्या ज्ञात करें

    एक एन-आरी पेड़ को देखते हुए और हमें इस पेड़ को पार करने के कुल तरीकों को खोजने का काम सौंपा गया है, उदाहरण के लिए - उपरोक्त पेड़ के लिए, हमारा उत्पादन 192 होगा। इस समस्या के लिए, हमें कॉम्बिनेटरिक्स के बारे में कुछ ज्ञान होना चाहिए। अब इस समस्या में, हमें बस हर पथ के लिए सभी संभावित संयोजनों की

  1. C++ में दी गई श्रेणी में स्थित BST नोड्स की गणना करें

    हमें नोड्स से बना एक बाइनरी सर्च ट्री दिया गया है और एक रेंज भी दी गई है और कार्य दिए गए रेंज में स्थित नोड्स की गिनती की गणना करना और परिणाम प्रदर्शित करना है। बाइनरी सर्च ट्री (BST) एक ऐसा पेड़ है जिसमें सभी नोड नीचे बताए गए गुणों का पालन करते हैं - किसी नोड के बाएँ उपप्रकार की कुंजी उसके पैरे

  1. सी ++ में बिना रिकर्सन के एन-आरी ट्री का प्रीऑर्डर ट्रैवर्सल

    इस समस्या में हमें एक N-ary Tree दिया जाता है। हमारा काम ट्री के प्रीऑर्डर ट्रैवर्सल को प्रिंट करना है। सबसे पहले, आइए कुछ बुनियादी शब्दावली सीखें, एन-आरी ट्री एक पेड़ है जिसमें सभी नोड्स में अधिकतम एन चाइल्ड नोड्स हो सकते हैं। उदाहरण 2-एरी (बाइनरी) ट्री में अधिकतम 2 चाइल्ड नोड होते हैं। प्रीऑर्ड