इस समस्या में, हमें एक बाइनरी ट्री दिया गया है और हमें प्रत्येक स्तर पर सभी नोड्स को उनके मानों के सॉर्ट क्रम में प्रिंट करना है।
आइए एक उदाहरण लेकर अवधारणा को बेहतर ढंग से समझते हैं,
इनपुट -

आउटपुट -
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