কম্পিউটার টিউটোরিয়াল

C++-এ BST-এ দেওয়া রেঞ্জের কীগুলো প্রিন্ট করুন

একটি বাইনারি সার্চ ট্রি (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
  1. C++-এ BST-এ ইনঅর্ডার সাকসেসর (Inorder Successor) বের করা II

  2. C++-এ BST-এ দিয়ে যাওয়া রেঞ্জে (Range) পড়া নোডের সংখ্যা গণনা

  3. BST-এ নোড ডিলিট C++-এ

  4. C++-এ একটি নির্দিষ্ট নোড থেকে দূরত্ব k-এ থাকা সব নোড প্রিন্ট করা