B-Tree হলো একটি সেলফ-ব্যালেন্সিং ট্রি ডেটা স্ট্রাকচার। এখানে B-Tree-তে ডেটা ইনসার্ট করে ইন-অর্ডার ট্রাভার্সাল দিয়ে সোর্টেড সিকোয়েন্স পাওয়ার উদাহরণ দেওয়া হলো। প্রতিটি নোডে সর্বোচ্চ ৫টি এলিমেন্ট রাখা হয়েছে।
মূল অপারেশন
- traverse() - ইন-অর্ডার ট্রাভার্সাল (সোর্টেড আউটপুট)
- sort() - নোডের ভেতরের ছোট অ্যারে বাবল সোর্ট (৫ এলিমেন্টের জন্য পর্যাপ্ত দ্রুত)
- split_child() - নোড ফুল হলে স্প্লিট করে নতুন লেভেল বানানো
- insert() - উপযুক্ত পজিশনে ইনসার্ট, প্রয়োজনে স্প্লিট
উদাহরণ কোড (সংক্ষিপ্ত)
struct BTreeNode {
int* data;
BTreeNode** child_ptr;
bool leaf;
int n;
};
void insert(int a) { /* B-Tree ইনসার্ট লজিক */ }
void traverse(BTreeNode* p) { /* ইন-অর্ডার ট্রাভার্সাল */ }
int main() {
int n, val;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> val;
insert(val);
}
traverse(root); // সোর্টেড আউটপুট
return 0;
}
আউটপুট
enter the no of elements to be inserted: 8 enter the element: 54 23 98 52 10 23 47 84 traversal of constructed tree 10 23 23 47 52 54 84 98
দ্রষ্টব্য: বাস্তবে B-Tree ডিস্ক-ভিত্তিক স্টোরেজের জন্য ডিজাইন করা। ইন-মেমরি সোর্টিং-এ std::sort বা quicksort/mergesort বেশি কার্যকর।