এই টিউটোরিয়ালে, আমরা একটি বাইনারি গাছের দুটি স্তরের সংখ্যার মধ্যে নোড প্রিন্ট করার জন্য একটি প্রোগ্রাম নিয়ে আলোচনা করব।
এতে, একটি নির্দিষ্ট বাইনারি গাছের জন্য আমাদের একটি নিম্ন স্তর এবং একটি উচ্চ স্তর দেওয়া হবে এবং আমাদের প্রদত্ত স্তরগুলির মধ্যে সমস্ত উপাদান প্রিন্ট করতে হবে৷
এটি সমাধান করতে আমরা সারি-ভিত্তিক লেভেল ট্রাভার্সাল ব্যবহার করতে পারি। ইনঅর্ডার ট্রাভার্সালের মধ্য দিয়ে যাওয়ার সময় আমাদের প্রতিটি স্তরের শেষে একটি মার্কিং নোড থাকতে পারে। তারপরে আমরা প্রতিটি স্তরে যেতে পারি এবং প্রদত্ত স্তরগুলির মধ্যে মার্কিং নোড বিদ্যমান থাকলে তার নোডগুলি প্রিন্ট করতে পারি৷
উদাহরণ
#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