ให้เรากำหนดไบนารีทรีของเราก่อนโดยใช้คลาสที่มีข้อมูล int, btree_node * rightChild, btree_node * leftChild leftChild และ rightChild เป็นตัวชี้ไปยัง btree_node สมาชิกทุกคนในชั้นเรียนของเราเป็นแบบสาธารณะ
class btree_node {
public:
int data;
btree_node* leftChild;
btree_node* rightChild; สำหรับการสร้างโหนดใหม่ เรามีฟังก์ชันตัวสร้างที่ใช้ค่า int เป็นพารามิเตอร์เพื่อกำหนดให้กับค่าโหนดที่สร้างขึ้นใหม่ leftChild และ rightChild ถูกตั้งค่าเป็น null
btree_node(int data){
this->data = data;
this->leftChild = NULL;
this-> = NULL;
} deconstructor คลาสลบลูกด้านซ้ายและขวาของต้นไม้ไบนารีโดยใช้คำสำคัญ delete เมื่อถูกเรียกใช้
~btree_node(){
delete leftChild;
delete rightChild;
cout << this->data << "is being deleted"<<endl;
} ในการทริกเกอร์การลบทรี เราเรียกการลบบนโหนดรูท เนื่องจากทรีย่อยด้านซ้ายและขวาจะถูกลบไปด้วย
delete root;
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้สำหรับการลบต้นไม้ไบนารีโดยใช้คำสำคัญ delete -
#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