Destructor de árbol de búsqueda binaria de C++

Ammar Ali 12 octubre 2023
Destructor de árbol de búsqueda binaria de C++

Este tutorial discutirá la creación de un destructor para un árbol de búsqueda binario usando la palabra clave delete en C++.

Destructor de árbol de búsqueda binaria de C++

Un árbol de búsqueda binaria (BST) es una estructura de datos que almacena datos ordenados que se pueden buscar. Un árbol de búsqueda binaria se utiliza en centros de datos y software.

Un árbol de búsqueda binaria consta de nodos, y cada nodo tiene dos hijos. Cuando se construye un árbol binario, el primer valor representa el nodo raíz y el siguiente valor se colocará a su derecha si es más grande que el nodo raíz; de lo contrario, se colocará a su izquierda.

Cuando llega el siguiente valor, primero tenemos que compararlo con el nodo raíz, y luego lo compararemos con los de otros niños, si los hay.

Cada nodo del árbol de búsqueda binaria consta de una clave y un valor. El árbol de búsqueda binaria es fácil de buscar porque ya está ordenado.

Para construir un árbol de búsqueda binario en C++, podemos usar el tipo de datos int para el valor y dos variables de puntero para los nodos izquierdo y derecho junto con la palabra clave this que se usa para referir las variables actuales a la instancia de la clase . Para crear el destructor que borre todo el árbol binario, podemos usar la palabra clave delete para desasignar la memoria de las variables.

Necesitamos desasignar la memoria de los nodos izquierdo y derecho para eliminar el árbol de búsqueda binaria. Por ejemplo, creemos una clase pública de árbol de búsqueda binaria que contendrá dos métodos, uno para construir el árbol y otro para eliminarlo.

Vea el código a continuación.

#include <iostream>
using namespace std;

class BTreeNode {
 public:
  int Treedata;
  BTreeNode* leftNode;
  BTreeNode* rightNode;

  BTreeNode(int Treedata) {
    this->Treedata = Treedata;
    this->leftNode = NULL;
    this->rightNode = NULL;
  }
  ~BTreeNode() {
    delete leftNode;
    delete rightNode;
    cout << "Deleting " << this->Treedata << endl;
  }
};

int main() {
  BTreeNode* root = new BTreeNode(1);
  BTreeNode* node1 = new BTreeNode(2);
  BTreeNode* node2 = new BTreeNode(3);

  root->leftNode = node1;
  root->rightNode = node2;

  delete root;

  return 0;
}

Producción :

Deleting 2
Deleting 3
Deleting 1

En el código anterior, creamos un árbol con una raíz y dos nodos y lo eliminamos usando la palabra clave eliminar. También usamos la función cout() para mostrar los valores de los nodos que se están eliminando uno por uno.

En el resultado anterior, podemos ver que node2 se elimina primero porque es el nodo izquierdo, y eliminamos el nodo izquierdo primero dentro del destructor del árbol de búsqueda binaria.

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Artículo relacionado - C++ Data Structure