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

বাইনারি ট্রি মুছে ফেলা `delete` কীওয়ার্ড দিয়ে C++-এ


প্রথমে একটি ক্লাস দিয়ে বাইনারি ট্রি সংজ্ঞায়িত করা হয় যার মধ্যে থাকে 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

  1. C++-এ RMQ ব্যবহার করে বাইনারি ট্রিতে LCA (Lowest Common Ancestor) বের করুন

  2. C++-এ বাইনারি ট্রি প্রিন্ট করা

  3. বাইনারি ট্রি প্রুনিং C++-এ

  4. বাইনারি ট্রিতে নিকটতম লিফ নোড খুঁজে বের করা (C++)