इस ट्यूटोरियल में, हम एक बाइनरी ट्री के दो दिए गए लेवल नंबरों के बीच नोड्स प्रिंट करने के प्रोग्राम पर चर्चा करेंगे।
इसमें हमें एक खास बाइनरी ट्री के लिए एक लो लेवल और एक हाई लेवल दिया जाएगा और हमें दिए गए लेवल के बीच सभी एलीमेंट को प्रिंट करना होगा।
इसे हल करने के लिए हम कतार-आधारित स्तर ट्रैवर्सल का उपयोग कर सकते हैं। इनऑर्डर ट्रैवर्सल से गुजरते समय हमारे पास प्रत्येक स्तर के अंत में एक अंकन नोड हो सकता है। फिर हम प्रत्येक स्तर पर जा सकते हैं और इसके नोड्स को प्रिंट कर सकते हैं यदि दिए गए स्तरों के बीच अंकन नोड मौजूद है।
उदाहरण
#include <iostream> #include <queue> using namespace std; struct Node{ int data; struct Node* left, *right; }; //to print the nodes between the levels void print_nodes(Node* root, int low, int high){ queue <Node *> Q; //creating the marking node Node *marker = new Node; int level = 1; Q.push(root); Q.push(marker); while (Q.empty() == false){ Node *n = Q.front(); Q.pop(); //checking for the end of level if (n == marker){ cout << endl; level++; if (Q.empty() == true || level > high) break; Q.push(marker); continue; } if (level >= low) cout << n->data << " "; if (n->left != NULL) Q.push(n->left); if (n->right != NULL) Q.push(n->right); } } Node* create_node(int data){ Node* temp = new Node; temp->data = data; temp->left = temp->right = NULL; return (temp); } int main(){ struct Node *root= create_node(20); root->left= create_node(8); root->right= create_node(22); root->left->left= create_node(4); root->left->right= create_node(12); root->left->right->left= create_node(10); root->left->right->right= create_node(14); cout << "Elements between the given levels are :"; print_nodes(root, 2, 3); return 0; }
आउटपुट
Elements between the given levels are : 8 22 4 12