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; }
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