在 C++ 中使用 delete 關鍵字刪除二叉樹?


我們首先使用包含 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;
}

類解構函式呼叫 delete 關鍵字來刪除二叉樹的左、右子節點。

~btree_node(){
   delete leftChild;
   delete rightChild;
   cout << this->data << "is being deleted"<<endl;
}

要觸發樹的刪除,我們對根節點呼叫 delete,因為它的左、右子樹將一起被刪除。

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

更新於:16-Jan-2021

148 瀏覽量

啟動您的職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.