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

एक पेड़ को सी ++ में भी नोड्स के जंगल में कनवर्ट करें

इस ट्यूटोरियल में, हम एक पेड़ को सम नोड्स के जंगल में बदलने के कार्यक्रम पर चर्चा करेंगे।

इसके लिए हमें एन नोड्स का एक बाइनरी ट्री प्रदान किया जाएगा। हमारा काम किनारों की अधिकतम संख्या की गणना करना है जिसे सम नोड्स का जंगल प्राप्त करने के लिए हटाया जा सकता है।

उदाहरण

#include<bits/stdc++.h>
#define N 12
using namespace std;
//returning the number of nodes of subtree
//having the root node
int depth_search(vector<int> tree[N], int visit[N], int *ans, int node){
   int num = 0, temp = 0;
   //marking nodes as visited
   visit[node] = 1;
   for (int i = 0; i < tree[node].size(); i++){
      if (visit[tree[node][i]] == 0){
      //finding total nodes of the sub subtree
      temp = depth_search(tree, visit, ans, tree[node][i]);
      //if nodes are even, increment the edges to be removed by 1
      (temp%2)?(num += temp):((*ans)++);
      }
   }
   return num+1;
}
//returning the maximum number of edges to be removed
int print_maxedge(vector<int> tree[N], int n){
   int visit[n+2];
   int ans = 0;
   memset(visit, 0, sizeof visit);
   depth_search(tree, visit, &ans, 1);
   return ans;
}
int main(){
   int n = 10;
   vector<int> tree[n+2];
   tree[1].push_back(3);
   tree[3].push_back(1);
   tree[1].push_back(6);
   tree[6].push_back(1);
   tree[1].push_back(2);
   tree[2].push_back(1);
   tree[3].push_back(4);
   tree[4].push_back(3);
   tree[6].push_back(8);
   tree[8].push_back(6);
   tree[2].push_back(7);
   tree[7].push_back(2);
   tree[2].push_back(5);
   tree[5].push_back(2);
   tree[4].push_back(9);
   tree[9].push_back(4);
   tree[4].push_back(10);
   tree[10].push_back(4);
   cout << print_maxedge(tree, n) << endl;
   return 0;
}

आउटपुट

2

  1. C++ में पेड़ का व्यास

    मान लीजिए कि हमारे पास एक अप्रत्यक्ष पेड़ है; हमें इसका व्यास ज्ञात करना है - उस पेड़ के सबसे लंबे पथ में किनारों की संख्या उस पेड़ का व्यास है। यहां पेड़ को किनारे की सूची के रूप में दिया गया है जहां किनारों [i] =[यू, वी] नोड्स यू और वी के बीच एक द्विदिश किनारा है। प्रत्येक नोड में सेट {0, 1, ...,

  1. C++ में पूर्ण ट्री नोड्स की गणना करें

    मान लीजिए कि हमारे पास एक पूर्ण बाइनरी ट्री है, हमें नोड्स की संख्या गिननी है। तो अगर पेड़ जैसा है - तो आउटपुट 6 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे यह पुनरावर्ती दृष्टिकोण का उपयोग करेगा। यह विधि, countNodes() जड़ को तर्क के रूप में ले रही है। घंटा:=0 और एचएल:=0 रूट के रूप में

  1. C++ में बाइनरी सर्च ट्री के सभी सम नोड्स प्रिंट करें

    इस समस्या में, हमें एक बाइनरी सर्च ट्री दिया जाता है। हमारा काम बाइनरी सर्च ट्री के सभी सम-मूल्यवान नोड्स को प्रिंट करना है। बाइनरी सर्च ट्री एक बाइनरी ट्री है जो निम्नलिखित शर्तों का पालन करता है - बाएं उप-पेड़ में हमेशा मूल नोड की तुलना में छोटे मान वाले नोड होते हैं। ठीक है, उप-वृक्ष में ह