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

दिए गए पेड़ में नोड्स की गणना करें जिसका वजन सी ++ में दो की शक्ति है


एक बाइनरी ट्री को देखते हुए इसके नोड्स के वजन के साथ। लक्ष्य उन नोड्स की संख्या का पता लगाना है जिनका वजन इस तरह है कि संख्या दो की शक्ति है। अगर वजन 32 है तो यह 25 है इसलिए इस नोड को गिना जाएगा।

उदाहरण के लिए

इनपुट

मान डालने के बाद जो ट्री बनाया जाएगा वह नीचे दिया गया है -

दिए गए पेड़ में नोड्स की गणना करें जिसका वजन सी ++ में दो की शक्ति है

आउटपुट

Count the nodes in the given tree whose weight is a power of two are: 3

स्पष्टीकरण

we are given with the tree node and the weights associated with each
node. Now we calculate the power of each and every weight and check whether it can
be expressed as power of 2 or not.


<थेड> <थ>वजन <थ>वजन^2 <वें>2 की शक्ति
नोड
2 8 2*2*2 नहीं
1 100 10*2 हां
4 211 प्राइम नंबर नहीं
3 16 4^2 हां
8 1717 संभव नहीं नहीं
9 32 2*2*2*2*2 हां

इनपुट

मान डालने के बाद जो ट्री बनाया जाएगा वह नीचे दिया गया है -

दिए गए पेड़ में नोड्स की गणना करें जिसका वजन सी ++ में दो की शक्ति है

आउटपुट

Count the nodes in the given tree whose weight is a power of two are: 3

स्पष्टीकरण

we are given with the tree node and the weights associated with each
node. Now we calculate the digit sum of each and every weight and check whether it's
odd or not.


<थेड> <थ>वजन <थ>वजन ^ 2 <वें>2 की शक्ति
नोड
2 16 4^2 हां
1 141 संभव नहीं नहीं
4 41 प्राइम नंबर नहीं
3 64 8^2 हां
8 81 9^2 हां

नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -

इस दृष्टिकोण में हम पेड़ के ग्राफ पर डीएफएस लागू करेंगे और जांचेंगे कि नोड्स का वजन 2 की शक्ति है या नहीं। इस उद्देश्य के लिए दो वैक्टर Node_Weight(100) और edge_graph[100] लें।

  • नोड्स के भार के साथ Node_Weight[] प्रारंभ करें।

  • वेक्टर edge_graph का उपयोग करके एक ट्री बनाएं।

  • एक वैश्विक चर योग लें और इसे 0 से प्रारंभ करें।

  • फ़ंक्शन power_two(int node, int root) एक पेड़ का नोड और रूट नोड लेता है और दिए गए पेड़ में नोड्स की गिनती देता है जिसका वजन दो की शक्ति है।

  • सेट लें =Node_Weight [नोड];

  • यदि सेट &&(!(सेट और (सेट -1))) सही है तो यह दो की शक्ति है (बिटवाइज और फिर नकारात्मक)

  • सेट के रूप में वृद्धि की शक्तियों का एक मूल्य है जो 2 की शक्ति है।

  • लूप के लिए उपयोग कर वेक्टर edge_graph[नोड] में ट्रैवर्स ट्री।

  • सदिश में अगले नोड के लिए power_two(it, node) को कॉल करें।

  • सभी कार्यों के अंत में हमारे पास दो की शक्ति के रूप में मूल्य वाले भार के साथ नोड्स की संख्या के रूप में शक्ति होगी।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
vector<int> Node_Weight(100);
vector<int> edge_graph[100];
int powers = 0;
void power_two(int node, int root){
   int set = Node_Weight[node];
   if(set && (!(set & (set − 1)))){
      powers++;
   }
   for(int it : edge_graph[node]){
      if(it == root){
         continue;
      }
      power_two(it, node);
   }
}
int main(){
   //weight of the nodes
   Node_Weight[2] = 8;
   Node_Weight[1] = 100;
   Node_Weight[4] = 211;
   Node_Weight[3] = 16;
   Node_Weight[8] = 7171;
   Node_Weight[9] = 32;
   //create graph edge
   edge_graph[2].push_back(1);
   edge_graph[2].push_back(4);
   edge_graph[4].push_back(3);
   edge_graph[4].push_back(8);
   edge_graph[8].push_back(9);
   power_two(2, 2);
   cout<<"Count the nodes in the given tree whose weight is a power of two are: "<<powers;
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count the nodes in the given tree whose weight is a power of two are: 3

  1. C++ में दिए गए बाइनरी ट्री के सभी स्तरों के बीच गैर-पत्ती नोड्स का अधिकतम योग

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो c++ में दिए गए बाइनरी ट्री के सभी स्तरों के बीच गैर-पत्ती नोड्स की अधिकतम राशि पायेगा। समस्या का विवरण - हम पेड़ के सभी गैर-पत्ती नोड्स और प्रत्येक स्तर के योग की गणना करेंगे और फिर अधिकतम योग प्रिंट करेंगे। समस

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

    इस समस्या में, हमें एक बाइनरी ट्री और ट्री में दो लेवल (ऊपरी और निचले) दिए जाते हैं और हमें ट्री के ऊपरी और निचले स्तरों के बीच सभी नोड्स को प्रिंट करना होता है। बाइनरी ट्री एक विशेष पेड़ है जिसके प्रत्येक नोड में अधिकतम दो नोड (एक/दो/कोई नहीं) होते हैं। आइए समस्या को समझने के लिए एक उदाहरण लेते ह

  1. C++ में दिए गए परफेक्ट बाइनरी ट्री के सभी नोड्स का योग ज्ञात करें

    मान लीजिए कि हमारे पास एक सकारात्मक पूर्णांक L है, जो एक पूर्ण बाइनरी ट्री में स्तरों की संख्या का प्रतिनिधित्व करता है। इस परफेक्ट बाइनरी ट्री में लीफ नोड्स की संख्या 1 से n तक होती है। जहां n लीफ नोड्स की संख्या है। पैरेंट नोड बच्चों का योग है। हमारा काम इस परफेक्ट बाइनरी ट्री के सभी नोड्स के योग