使用C++程序中的delete关键字删除二叉树


在本教程中,我们将学习如何使用delete关键字删除二叉树。

我们将使用析构函数来删除二叉树。当对象超出作用域或通过调用delete被销毁时,会自动调用析构函数。

析构函数的名称与类名相同,但在前面加有波浪号 (~)

让我们看看解决这个问题的步骤。

  • 编写一个名为Node的类。

  • 编写一个接受节点数据的构造函数。

  • 编写一个析构函数。

    • 删除左子节点。

    • 删除右子节点。

    • 打印当前节点数据。

  • 使用虚拟数据初始化二叉树。

  • 使用delete root语句删除二叉树。

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
class Node {
   public:
   int data;
   Node* left;
   Node* right;
   // constructor
   Node(int data) {
      this->data = data;
      this->left = NULL;
      this->right = NULL;
   }
   // destructor
   ~Node() {
      // deleting the left and right pointers
      delete left;
      delete right;
      // printing node data
      cout << "Deleted node with data " << this->data << endl;
   }
};
int main() {
   Node* root = new Node(1);
   root->left = new Node(2);
   root->right = new Node(3);
   root->left->left = new Node(4);
   root->left->right = new Node(5);
   root->right->left = new Node(6);
   root->right->right = new Node(7);
   // deleting the entire tree using destructure function
   delete root;
   return 0;
}

输出

如果执行上述程序,则会得到以下结果。

Deleted node with data 4
Deleted node with data 5
Deleted node with data 2
Deleted node with data 6
Deleted node with data 7
Deleted node with data 3
Deleted node with data 1

结论

如果您在本教程中有任何疑问,请在评论区提出。

更新于:2021年1月27日

2K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告