প্রথমে একটি ক্লাস দিয়ে বাইনারি ট্রি সংজ্ঞায়িত করা হয় যার মধ্যে থাকে int data, btree_node* rightChild, btree_node* leftChild। সব সদস্য পাবলিক।
class btree_node {
public:
int data;
btree_node* leftChild;
btree_node* rightChild;
};
নতুন নোড তৈরির জন্য কনস্ট্রাক্টর ফাংশন যা ইন্টিজার ভ্যালু নেয় এবং নতুন নোডে অ্যাসাইন করে। লেফট ও রাইট চাইল্ড নাল সেট করা হয়।
btree_node(int data) {
this->data = data;
this->leftChild = NULL;
this->rightChild = NULL;
}
ক্লাস ডিস্ট্রাক্টর বাইনারি ট্রির লেফট ও রাইট চাইল্ডকে `delete` কীওয়ার্ড দিয়ে মুছে ফেলে যখন আহ্বান করা হয়।
~btree_node() {
delete leftChild;
delete rightChild;
cout << this->data << " is being deleted" << endl;
}
ট্রি মুছে ফেলার জন্য রুট নোডে `delete` কল করলে এর লেফট ও রাইট সাবট্রি বা স্বয়ংক্রিয়ভাবে মুছে যাবে।
delete root;
উদাহরণ
#include <iostream>
using namespace std;
class btree_node {
public:
int data;
btree_node* leftChild;
btree_node* rightChild;
btree_node(int data) {
this->data = data;
this->leftChild = NULL;
this->rightChild = NULL;
}
~btree_node() {
delete leftChild;
delete rightChild;
cout << this->data << " is being deleted" << endl;
}
};
int main() {
btree_node* root = new btree_node(2);
btree_node* node1 = new btree_node(4);
btree_node* node2 = new btree_node(6);
btree_node* node3 = new btree_node(8);
btree_node* node4 = new btree_node(10);
root->leftChild = node1;
root->rightChild = node2;
node1->leftChild = node3;
node1->rightChild = node4;
delete root;
return 0;
}
আউটপুট
8 is being deleted 10 is being deleted 4 is being deleted 6 is being deleted 2 is being deleted