इस ट्यूटोरियल में, हम बाइनरी ट्री के दो दिए गए लेवल नंबरों के बीच के नोड्स को प्रिंट करने के प्रोग्राम पर चर्चा करेंगे।
हमें एक बाइनरी ट्री के लिए एक लो लेवल और एक हाई लेवल दिया जाएगा और हमें दिए गए लेवल्स के बीच के सभी तत्वों को प्रिंट करना होगा।
इसे हल करने के लिए हम क्यू-आधारित लेवल ट्रैवर्सल का उपयोग कर सकते हैं। इनऑर्डर ट्रैवर्सल के दौरान हम प्रत्येक लेवल के अंत में एक मार्कर नोड रख सकते हैं। फिर हम प्रत्येक लेवल पर जा सकते हैं और उसके नोड्स प्रिंट कर सकते हैं यदि मार्कर नोड दिए गए लेवल्स के बीच मौजूद है।
C++ उदाहरण
#include <iostream>
#include <queue>
using namespace std;
struct Node {
int data;
struct Node *left, *right;
};
void print_nodes(Node* root, int low, int high) {
queue<Node*> Q;
Node *marker = new Node;
int level = 1;
Q.push(root);
Q.push(marker);
while (!Q.empty()) {
Node *n = Q.front();
Q.pop();
if (n == marker) {
cout << endl;
level++;
if (Q.empty() || 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