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

C++ में n-ary ट्री के प्रत्येक नोड के सबट्री में लीफ नोड्स की संख्या


इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो n-ary ट्री में प्रत्येक नोड के लिए लीफ नोड्स की संख्या ढूंढता है।

एक n-ary ट्री दिया गया है, हमें प्रत्येक सबट्री के लिए लीफ नोड्स की संख्या ढूंढनी है। आइए एक उदाहरण देखते हैं।

इनपुट

N = 8 tree = [[2, 3], [], [4, 5, 6], [7, 8], [], [], [], []]

आउटपुट

1->5 2->1 3->4 4->2 5->1 6->1 7->1 8->1

एल्गोरिदम

  • अपनी पसंद के n-ary ट्री से आरंभ करें।
  • ट्री को पार करने के लिए DFS का उपयोग करें।
  • प्रत्येक नोड के लीफ नोड्स काउंट को स्टोर करने के लिए एक सरणी बनाए रखें।
  • DFS के रिकर्सिव कॉल के बाद लीफ नोड का काउंट बढ़ाएं।
  • लीफ नोड्स काउंट के साथ सभी नोड प्रिंट करें।

कार्यान्वयन

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

#include <bits/stdc++.h> using namespace std; void insertNode(int x, int y, vector<int> tree[]) {    tree[x].push_back(y); } void DFS(int node, int leaf[], int visited[], vector<int> tree[]) {    leaf[node] = 0;    visited[node] = 1;    for (auto it : tree[node]) {       if (!visited[it]) {          DFS(it, leaf, visited, tree);          leaf[node] += leaf[it];       }    }    if (!tree[node].size()) {       leaf[node] = 1;    } } int main() {    int N = 8;    vector<int> tree[N + 1];    insertNode(1, 2, tree);    insertNode(1, 3, tree);    insertNode(3, 4, tree);    insertNode(3, 5, tree);    insertNode(3, 6, tree);    insertNode(4, 7, tree);    insertNode(4, 8, tree);    int leaf[N + 1];    int visited[N + 1];    for (int i = 0; i <= N; i++) {       visited[i] = 0;    }    DFS(1, leaf, visited, tree);    for (int i = 1; i <= N; i++) {       cout << i << "->" << leaf[i] << endl;    }    return 0; }

आउटपुट

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

1->5 2->1 3->4 4->2 5->1 6->1 7->1 8->1
  1. C++ में बाइनरी ट्री में निकटतम लीफ ढूंढें C++ में बाइनरी ट्री में निकटतम लीफ ढूंढें

    मान लीजिए, एक बाइनरी ट्री दिया गया है। इसमें अलग-अलग लेवल पर लीफ नोड्स हैं। एक और पॉइंटर दिया गया है, जो एक नोड को इंगित कर रहा है। हमें इंगित नोड से निकटतम लीफ नोड की दूरी ढूंढनी है। ट्री को नीचे जैसा मानें - यहां लीफ नोड्स 2, -2 और 6 हैं। यदि पॉइंटर नोड -5 पर इंगित कर रहा है, तो -5 से निकटतम नोड

  1. C++ प्रोग्राम: बाइनरी ट्री के विषम स्तरों पर नोड्स प्रिंट करना C++ प्रोग्राम: बाइनरी ट्री के विषम स्तरों पर नोड्स प्रिंट करना

    इस ट्यूटोरियल में, हम एक दिए गए बाइनरी ट्री के विषम स्तरों पर मौजूद नोड्स को प्रिंट करने के प्रोग्राम पर चर्चा करेंगे। इस प्रोग्राम में, रूट नोड के लिए स्तर 1 माना जाता है और साथ ही वैकल्पिक स्तर अगला विषम स्तर होता है। उदाहरण के लिए, मान लें हमें निम्नलिखित बाइनरी ट्री दिया गया है: तो इस बाइनरी

  1. C++ प्रोग्राम: बाइनरी ट्री के नोड्स को प्रिंट करना जैसे ही वे लीफ नोड बनते हैं C++ प्रोग्राम: बाइनरी ट्री के नोड्स को प्रिंट करना जैसे ही वे लीफ नोड बनते हैं

    एक बाइनरी ट्री दिया गया है, हमें उसके लीफ नोड्स को प्रिंट करना है और फिर उन लीफ नोड्स को हटाना है और फिर तब तक दोहराना है जब तक ट्री में कोई नोड न बचे। उदाहरण तो समस्या का आउटपुट होना चाहिए - 6 7 9 13 14 3 4 2 1 दृष्टिकोण हमने एक ऐसा दृष्टिकोण अपनाया है जहां हम DFS लागू कर रहे हैं। एक अस्थायी म