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

C++ का उपयोग करके बाइनरी ट्री के शीर्ष दृश्य में नोड्स मुद्रित करने का कार्यक्रम

इस ट्यूटोरियल में, हम किसी दिए गए बाइनरी ट्री के शीर्ष दृश्य में दिखाई देने वाले सभी नोड्स को प्रिंट करने के लिए एक प्रोग्राम पर चर्चा करेंगे।

किसी विशेष बाइनरी ट्री के लिए, एक नोड अपने शीर्ष दृश्य में प्रकट होता है यदि यह अपनी क्षैतिज दूरी पर सबसे पहला नोड है। नोड x के बाएं नोड के लिए क्षैतिज दूरी x-1 है और नोड x के दाएं नोड के लिए x+1 है।

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

उदाहरण

#include <iostream>
#include<queue>
#include<map>
using namespace std;
struct Node{
   Node * left;
   Node* right;
   int h_dist;
   int data;
};
Node* create_node(int key){
   Node* node=new Node();
   node->left = node->right = NULL;
   node->data=key;
   return node;
}
void print_topview(Node* root){
   if(root==NULL)
      return;
   queue<Node*>q;
   map<int,int> m;
   int h_dist=0;
   root->h_dist=h_dist;
   q.push(root);
   cout<< "Top View for the given tree:" << endl;
   while(q.size()){
      h_dist=root->h_dist;
      if(m.count(h_dist)==0)
         m[h_dist]=root->data;
      if(root->left){
         root->left->h_dist=h_dist-1;
      q.push(root->left);
      }
      if(root->right){
         root->right->h_dist=h_dist+1;
         q.push(root->right);
      }
      q.pop();
      root=q.front();
   }
   for(auto i=m.begin();i!=m.end();i++){
      cout<<i->second<< " ";
   }
}
int main(){
   Node* root = create_node(11);
   root->left = create_node(23);
   root->right = create_node(35);
   root->left->right = create_node(47);
   root->left->right->right = create_node(59);
   root->left->right->right->right = create_node(68);
   print_topview(root);
   return 0;
}

आउटपुट

Top View for the given tree:
23 11 35 68

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

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

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

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

  1. C++ में एक स्टैक का उपयोग करके बाएं से दाएं बाइनरी ट्री में लीफ नोड्स प्रिंट करें

    प्रोग्राम को बाइनरी ट्री के लीफ नोड्स को बाएं से दाएं प्रिंट करना चाहिए, लेकिन चुनौती में केवल एक स्टैक का उपयोग करना शामिल है पुश () फ़ंक्शन के माध्यम से एक बाइनरी ट्री के नोड्स डालें और पॉप () ऑपरेशन के माध्यम से लीफ नोड्स प्रदर्शित करें। लीफ नोड्स अंतिम नोड होते हैं जिनके बाएँ और दाएँ पॉइंटर NU