একটি বাইনারি সার্চ ট্রি (BST) এবং দুটি মান k1, k2 দেওয়া আছে। BST-এ k1 থেকে k2 রেঞ্জের মধ্যে পড়া সব কীগুলো ক্রমবর্ধমান অর্ডারে প্রিন্ট করতে হবে।
BST-এর বৈশিষ্ট্য: লেফট সাবট্রি < রুট < রাইট সাবট্রি।
উদাহরণ: k1=12, k2=25 → আউটপুট: 15, 20, 24।
- রুট k1-এর চেয়ে বড় হলে লেফট সাবট্রি রিকার্সিভ কল করুন।
- রুট k2-এর চেয়ে ছোট হলে রাইট সাবট্রি রিকার্সিভ কল করুন।
- রুট রেঞ্জের ভিতরে হলে প্রিন্ট করুন।
#include <bits/stdc++.h>
using namespace std;
class node {
public:
int data;
node *left;
node *right;
};
void nodesInRange(node *root, int k1, int k2) {
if (NULL == root) return;
if (k1 < root->data)
nodesInRange(root->left, k1, k2);
if (k1 <= root->data && k2 >= root->data)
cout << root->data << "\t";
if (k2 > root->data)
nodesInRange(root->right, k1, k2);
}
node* insert(int data) {
node *temp = new node();
temp->data = data;
temp->left = NULL;
temp->right = NULL;
return temp;
}
int main() {
node *root = new node();
int k1 = 12, k2 = 25;
root = insert(20);
root->left = insert(10);
root->right = insert(24);
root->left->left = insert(8);
root->left->right = insert(15);
root->right->right = insert(32);
cout << "The values of node within the range are\t";
nodesInRange(root, k1, k2);
return 0;
}
The values of node within the range are 15 20 24