Eliminar un árbol binario usando la palabra clave delete

Ya se ha discutido en las publicaciones anteriores un programa recursivo y no recursivo para eliminar un árbol binario completo . En esta publicación, se analiza la eliminación de todo el árbol binario mediante la palabra clave delete en C++.

Declare una función destructora en la clase ‘BinaryTreeNode’ que se ha definido para crear un Node de árbol. El uso de la palabra clave ‘eliminar’ en un objeto de una clase elimina todo el árbol binario. Su destructor se llama dentro del destructor. Use la palabra clave ‘eliminar’ para los niños; por lo tanto, los destructores para los hijos se llamarán uno por uno, y el proceso continuará recursivamente hasta que se elimine todo el árbol binario. Considere el árbol que se muestra a continuación, tan pronto como se llame al destructor para la raíz, es decir, ‘1’, llamará a los destructores para ‘2’ y ‘3’, y 2 llamará lo mismo para su hijo izquierdo y derecho con datos ‘4’ y ‘5’ respectivamente. Eventualmente, el árbol se eliminará en el orden: 4->5->2->3->1 (Post-pedido)

A continuación se muestra la implementación en C++ del enfoque anterior:

// C++ program to delete the entire binary
// tree using the delete keyword
#include <iostream>
using namespace std;
  
class BinaryTreeNode {
  
    // Making data members public to
    // avoid the usage of getter and setter functions
public:
    int data;
    BinaryTreeNode* left;
    BinaryTreeNode* right;
  
    // Constructor function to
    // assign data to the node
    BinaryTreeNode(int data)
    {
        this->data = data;
        this->left = NULL;
        this->right = NULL;
    }
  
    // Destructor function to delete the tree
    ~BinaryTreeNode()
    {
        // using keyword to delete the tree
        delete left;
        delete right;
  
        // printing the node which has been deleted
        cout << "Deleting " << this->data << endl;
    }
};
  
// Driver Code
int main()
{
    // Creating the nodes dynamically
    BinaryTreeNode* root = new BinaryTreeNode(1);
    BinaryTreeNode* node1 = new BinaryTreeNode(2);
    BinaryTreeNode* node2 = new BinaryTreeNode(3);
    BinaryTreeNode* node3 = new BinaryTreeNode(4);
    BinaryTreeNode* node4 = new BinaryTreeNode(5);
  
    // Creating the binary tree
    root->left = node1;
    root->right = node2;
    node1->left = node3;
    node1->right = node4;
  
    // Calls the destructor function which actually deletes the tree entirely
    delete root;
  
    return 0;
}
Producción:

Deleting 4
Deleting 5
Deleting 2
Deleting 3
Deleting 1

Publicación traducida automáticamente

Artículo escrito por IshanArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *