Árbol de búsqueda binaria C ++

Árbol de búsqueda binaria C ++

BST es una estructura de datos que mantiene los datos en una lista ordenada. Se conoce como un árbol de búsqueda binario porque, en el árbol, cada nodo tiene un máximo de dos hijos que no se puede aumentar aún más. Esto se conoce como un árbol de búsqueda porque se usa para buscar o encontrar cualquier elemento presente. Implementaremos este fenómeno en el idioma C ++.

Implementación

En una implementación, el primer paso es usar una estructura para inicializar la tecla de tipo entero y los nodos del lado izquierdo y derecho. Estos nodos se definen utilizando un puntero variable, ya que ambos guardan las direcciones de los nodos alternativos. Después de eso, cerramos la estructura.

Crearemos un nuevo nodo nuevamente a través de una estructura. El parámetro de la función contendrá los datos que queremos ingresar en el nodo.

struct node *newnode (intem elemento)

Creará una nueva temperatura de nodo que almacenará datos en él, y el tamaño de la memoria se asignará a través de Malloc (). Agregaremos el valor del elemento en la parte clave del nodo. Mientras que las partes izquierda y derecha, que se declaran previamente en la estructura, se declaran como nulas ahora porque es el primer nodo. La temperatura será devuelta.

Se crea una función con el nombre "Inorder", y aceptará el nodo raíz en el parámetro. Como sabemos, el árbol contiene tres partes principales: lados de nodo, izquierda y derecho del árbol. Usaremos una declaración if para verificar si la raíz no es nula. Luego, llame a la función y envíe la parte izquierda de la raíz. Esto mostrará la raíz en sí con una flecha que denotará la dirección del camino en el árbol. A continuación, para atravesar a la derecha, llame a la función incorporada con la derecha de la raíz como parámetro.

Inorder (raíz -> izquierda)

Así es como se realiza el recorrido en orden. Para insertar un nuevo nodo en el árbol, utilizaremos una función que tomará un nodo y la clave como valores de parámetros. Si el árbol ya está vacío, se devolverá el nuevo nodo. En el segundo caso, si el árbol no está vacío, primero vaya al lado derecho e inserte un nuevo nodo aquí. Para la inserción, utilizaremos una declaración if-else para verificar el pedido de la clave. La nueva llave irá al lado izquierdo para el orden ascendente. Si la parte que verificará la nueva clave es menor que el valor presente ya en el nodo, ingrese la clave a la parte izquierda del nodo.

Nodo -> izquierda = inserto (nodo -> izquierda, tecla)

Mientras que si la clave es mayor, irá a la parte correcta.

Después de la inserción del nodo, verificaremos el siguiente nodo o el nodo que es el sucesor. Se crea una función del valor min que creará un nuevo nodo con un nombre *actual. Este nodo será asignado por un valor aprobado como argumento a la función. Primero encontrará el nodo de esquina o la hoja del modo izquierdo en el lado izquierdo del árbol. Usamos un bucle de tiempo que itera hasta que termine el recorrido del nodo. En otras palabras, la parte izquierda del nodo actual no es nula.

Corriente = corriente -> izquierda

Sigue asignando el nodo actual el siguiente valor de corriente dentro del bucle a la izquierda.

Nuestro árbol está atravesado y organizado agregando hojas en ambos lados. Cada valor se insertará a través de la llamada de función realizada desde el programa principal. Ahora, necesitamos buscar cualquier elemento y lo eliminaremos una vez que se encuentre.

El árbol en C ++ funciona en el mismo fenómeno que la lista vinculada. Aplicaremos la búsqueda binaria en el árbol y realizaremos una operación de eliminación para eliminar un nodo o hoja del árbol. Se crea una función del nodo Delete; contendrá el árbol y el valor como parámetros. Primero verificaremos que los árboles deben tener valores dentro de ellos. Entonces, se utilizará el estado if, y si la raíz es nula, significa devolver la raíz solo.

If (clave clave)

La clave que desea eliminar es más pequeña que el nodo raíz. Luego muévase al lado izquierdo y llame a la función Eliminar con la parte izquierda del árbol, y la clave a eliminar.

Raíz -> izquierda = deletenode (raíz -> izquierda, tecla);

Y lo mismo ocurre con la parte más. Si la tecla es mayor que la tecla de nodo, vaya a la ruta correcta, llame a la función Eliminar. Pase la porción correcta del árbol y la llave para que sea fácil encontrar el nodo que desea eliminar.

Ahora, llegando a la parte del otro, eso es aplicable si el nodo está solo, no tiene hoja más o tiene un solo hijo por delante. Dentro de la parte delse nuevamente, si se utilizará una declaración que verifique si no hay nodo en el lado derecho, luego agregue el valor en el lado derecho del nodo al nuevo nodo temperativo, de manera similar para el lado izquierdo.

Struct nodo * temp = root -> izquierda;

En esa condición, libera la raíz. Esto eliminará el valor de la raíz.

Gratis (raíz);

Si algún nodo contiene dos hojas con él, para buscar el valor, usaremos la función de valor min y la parte correcta se enviará a la función.

Minvaluende (raíz -> derecha);

Cuando se encuentra el valor a eliminar, lo declararemos la última parte del árbol para que pueda eliminarse fácilmente.

Root -> key = temp -> key;

Después de hacer esto, elimine el nodo,

Root -> right = delete nodo (nodo -> derecho, temp -> key);

Después de cerrar la función, declararemos el programa principal aquí. El nodo raíz se establecerá como nulo inicialmente. Usando la llamada de función Insertar (), usaremos los datos de raíz y número en el nodo.

Insertar (raíz, 5);

Se requiere la función de orden para el recorrido del árbol.

Inorder (raíz);

Luego, para eliminar el nodo, llamaremos a la función Eliminar.

Root = deletenode (raíz, 10);

Después de la eliminación, los valores se muestran nuevamente.

Después de escribir el código, lo ejecutaremos en la terminal de Ubuntu a través del compilador.

archivo de archivo $ g ++ -o.C
ps ./archivo

Como puede ver, los siete elementos se ingresan en el nodo. Uno se elimina y el resto se mostrará en el mismo orden que antes.

Conclusión

Se utiliza un árbol de búsqueda binario para almacenar los valores en la forma ordenada. Para buscar en cualquier número, todos los números deben ordenarse primero en orden. Después de eso, el número especificado se busca dividiendo el árbol en dos partes, haciendo subárboles. La implementación de BST se realiza en el sistema Ubuntu explicando un ejemplo de manera elaborada. Esperamos que hayas encontrado este artículo útil. Consulte los otros artículos de Sugerencia de Linux para obtener más consejos y tutoriales.