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

C++ में क्रमबद्ध क्रम में बाइनरी ट्री स्तरों को प्रिंट करें


इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है और हमें सभी नोड्स को उनके मूल्यों के क्रमबद्ध क्रम में एक स्तर पर प्रिंट करना होता है।

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

इनपुट -

C++ में क्रमबद्ध क्रम में बाइनरी ट्री स्तरों को प्रिंट करें

आउटपुट -

20
6 15
2 17 32 78

इस समस्या को हल करने के लिए, हमें पेड़ के प्रत्येक स्तर के क्रमबद्ध क्रम को प्रिंट करना होगा। इसके लिए हमें एक कतार और दो प्राथमिकता वाली कतारें बनानी होंगी। NULL विभाजक का उपयोग दो स्तरों को अलग करने के लिए किया जाता है।

उदाहरण

तर्क को स्पष्ट करने के लिए कार्यक्रम -

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
struct Node {
   int data;
   struct Node *left, *right;
};
void printLevelElements(Node* root){
   if (root == NULL)
      return;
   queue<Node*> q;
   priority_queue<int, vector<int>, greater<int> > current_level;
   priority_queue<int, vector<int>, greater<int> > next_level;
   q.push(root);
   q.push(NULL);
   current_level.push(root->data);
   while (q.empty() == false) {
      int data = current_level.top();
      Node* node = q.front();
      if (node == NULL) {
         q.pop();
         if (q.empty())
            break;
         q.push(NULL);
         cout << "\n";
         current_level.swap(next_level);
         continue;
      }
      cout << data << " ";
      q.pop();
      current_level.pop();
      if (node->left != NULL) {
         q.push(node->left);
         next_level.push(node->left->data);
      }
      if (node->right != NULL) {
         q.push(node->right);
         next_level.push(node->right->data);
      }
   }
}
Node* insertNode(int data){
   Node* temp = new Node;
   temp->data = data;
   temp->left = temp->right = NULL;
   return temp;
}
int main(){
   Node* root = insertNode(12);
   root->left = insertNode(98);
   root->right = insertNode(34);
   root->left->left = insertNode(76);
   root->left->right = insertNode(5);
   root->right->left = insertNode(12);
   root->right->right = insertNode(45);
   cout << "Elements at each Level of binary tree are \n";
   printLevelElements(root);
   return 0;
}

आउटपुट

Elements at each Level of binary tree are
12
34 98
5 12 45 76

  1. C++ में बाइनरी ट्री के लंबवत क्रम ट्रैवर्सल में kth नोड खोजें

    मान लीजिए कि हमारे पास एक बाइनरी ट्री और एक मान K है। कार्य Kth नोड को वर्टिकल ऑर्डर ट्रैवर्सल में प्रिंट करना है। यदि ऐसा कोई नोड मौजूद नहीं है, तो -1 लौटाएं। तो अगर पेड़ नीचे जैसा है - लंबवत क्रम ट्रैवर्सल इस प्रकार है - 4 2 1 5 6 3 8 7 9 तो अगर K =3 है, तो परिणाम 1 होगा। दृष्टिकोण सरल है। हम

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

    हमें अलग-अलग नोड्स के एक बाइनरी ट्री और बाइनरी ट्री के दो नोड्स दिए गए हैं, जिसका बाइनरी ट्री में पथ हम प्रिंट करना चाहते हैं। उदाहरण के लिए - हम नोड 140 से 211 के बीच के पाथ को प्रिंट करना चाहते हैं, इसलिए इसका आउटपुट इस तरह होना चाहिए - Output: 140->3->10->211 विचार दो नोड्स के लिए रू

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

    बाइनरी ट्री को देखते हुए, कार्य 1 से n तक के नोड में संग्रहीत प्रत्येक कुंजी से जुड़े स्तर को प्रिंट करना है उपरोक्त पेड़ में, नोड्स हैं - 10 लेवल 13 पर और 211 लेवल 2140 पर, 162, 100 और 146 लेवल 3 पर कुंजी को देखते हुए प्रोग्राम को उस विशेष कुंजी के स्तर को प्रिंट करना होगा। उदाहरण एल्गोरिदम न