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

C++ में विषम और सम संख्या वाले सभी स्तरों को प्रिंट करें

इस समस्या में हमें एक पेड़ दिया जाता है। और हमें सभी स्तरों को सम संख्या में नोड्स और विषम संख्या में नोड्स के साथ प्रिंट करना होगा।

आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं

C++ में विषम और सम संख्या वाले सभी स्तरों को प्रिंट करें

आउटपुट -

Levels with odd number of nodes: 1, 3, 4
Levels with even number of nodes: 2

स्पष्टीकरण - पहले स्तर में केवल 1 तत्व (विषम), दूसरे स्तर में दो तत्व (सम) होते हैं, तीसरे स्तर में 3 तत्व (विषम) होते हैं और चौथे स्तर में 1 तत्व (सम) होता है।

अब, इस समस्या को हल करने के लिए। हमें प्रत्येक स्तर पर नोड्स की संख्या का पता लगाना होगा और उसके अनुसार सम-विषम स्तरों को प्रिंट करना होगा।

समाधान खोजने के लिए हम निम्नलिखित चरणों का पालन करेंगे -

चरण 1 -ऊंचाई[नोड]=1+ऊंचाई[पैरेंट]

. का उपयोग करके हर स्तर के लिए खोज एल्गोरिथम चलाएं

चरण 2 - प्रत्येक स्तर के लिए उस स्तर पर नोड्स की संख्या संग्रहित करें।

चरण 3 - तत्वों वाले सरणी पर पुनरावृति करें, और सम और विषम स्तरों पर प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void traversal(int node, int parent, int height[], int vis[], vector<int> tree[]){
   height[node] = 1 + height[parent];
   vis[node] = 1;
   for (auto it : tree[node]) {
      if (!vis[it]) {
         traversal(it, node, height, vis, tree);
      }
   }
}
void insert(int x, int y, vector<int> tree[]){
   tree[x].push_back(y);
   tree[y].push_back(x);
}
void evenOddLevels(int N, int vis[], int height[]){
   int mark[N + 1];
   memset(mark, 0, sizeof mark);
   int maxLevel = 0;
   for (int i = 1; i <= N; i++) {
      if (vis[i])
         mark[height[i]]++;
      maxLevel = max(height[i], maxLevel);
   }
   cout << "The levels with odd number of nodes are: ";
   for (int i = 1; i <= maxLevel; i++) {
      if (mark[i] % 2)
         cout << i << " ";
   }
   cout << "\nThe levels with even number of nodes are: ";
   for (int i = 1; i <= maxLevel; i++) {
      if (mark[i] % 2 == 0)
         cout << i << " ";
   }
}
int main(){
   const int N = 9;
   vector<int> tree[N + 1];
   insert(1, 2, tree);
   insert(1, 3, tree);
   insert(2, 4, tree);
   insert(2, 5, tree);
   insert(5, 7, tree);
   insert(5, 8, tree);
   insert(3, 6, tree);
   insert(6, 9, tree);
   int height[N + 1];
   int vis[N + 1] = { 0 };
   height[0] = 0;
   traversal(1, 0, height, vis, tree);
   evenOddLevels(N, vis, height);
   return 0;
}

आउटपुट

The levels with odd number of nodes are: 1 3 4
The levels with even number of nodes are: 2

  1. C++ में विषम और सम संख्या वाले सभी स्तरों को प्रिंट करें

    इस समस्या में हमें एक पेड़ दिया जाता है। और हमें सभी स्तरों को सम संख्या में नोड्स और विषम संख्या में नोड्स के साथ प्रिंट करना होगा। आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं आउटपुट - Levels with odd number of nodes: 1, 3, 4 Levels with even number of nodes: 2 स्पष्टीकरण - पह

  1. C++ . का उपयोग करके एक पेड़ के विषम स्तरों पर नोड्स को प्रिंट करने का कार्यक्रम

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

  1. सी ++ प्रोग्रामिंग में एक पेड़ के विषम स्तरों पर नोड्स प्रिंट करें।

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