Árbol binario de búsqueda java

Árbol binario de búsqueda java

Implementación en java del árbol de búsqueda binario

En informática, un árbol de búsqueda binario (BST), también llamado árbol binario ordenado o clasificado, es una estructura de datos en forma de árbol binario enraizado en el que la clave de cada nodo interno es mayor que todas las claves del subárbol izquierdo del nodo respectivo y menor que las de su subárbol derecho. La complejidad temporal de las operaciones en el árbol de búsqueda binario es directamente proporcional a la altura del árbol.

Los árboles de búsqueda binarios permiten la búsqueda binaria para la búsqueda, adición y eliminación rápidas de elementos de datos. Dado que los nodos de un BST están dispuestos de forma que cada comparación se salta aproximadamente la mitad del árbol restante, el rendimiento de la búsqueda es proporcional al del logaritmo binario. Los BST se idearon en los años 60 para el problema del almacenamiento eficiente de datos etiquetados y se atribuyen a Conway Berners-Lee y David Wheeler.

El rendimiento de un árbol de búsqueda binario depende del orden de inserción de los nodos en el árbol, ya que las inserciones arbitrarias pueden llevar a la degeneración; se pueden construir varias variaciones del árbol de búsqueda binario con un rendimiento garantizado en el peor de los casos. Las operaciones básicas son: buscar, recorrer, insertar y eliminar. Los BST con complejidades garantizadas en el peor de los casos se comportan mejor que una matriz sin ordenar, que requeriría un tiempo de búsqueda lineal.

  Arbol de japon rosa

Biblioteca de árboles binarios de Java

Un árbol binario de búsqueda (BST) es un árbol binario cuyos nodos contienen una clave y en el que el subárbol izquierdo de un nodo sólo contiene claves que son menores (o iguales) que la clave del nodo padre, y el subárbol derecho sólo contiene claves que son mayores (o iguales) que la clave del nodo padre.

Los nodos también pueden contener un valor además de la clave. Así, no sólo se puede comprobar si el árbol de búsqueda binario contiene una clave. También puede asignar un valor a la clave y recuperarlo a través de la misma (como en un Mapa).

La propiedad más importante de un árbol de búsqueda binario es el acceso rápido a un nodo a través de su clave. El esfuerzo necesario para ello depende de la estructura del árbol: los nodos que están cerca de la raíz se encuentran tras menos comparaciones que los nodos que están lejos de la raíz.

Dependiendo del uso que se le quiera dar al árbol de búsqueda binario, existen diferentes requisitos en cuanto a su forma. Para determinadas aplicaciones, la altura del árbol de búsqueda binario debe ser lo más baja posible (véase la sección Árbol de búsqueda binario equilibrado).

  Fruto moringa arbol

Avl tree java

}Inserción en un árbol de búsqueda binario en Java:El proceso de inserción requiere un método que cree un nuevo nodo y lo inserte en el árbol en la posición correcta dependiendo de los datos a insertar.Según la regla, si el valor a insertar es menor que el nodo padre, se crea un nodo hijo izquierdo mientras que si el valor es mayor se creará un hijo derecho. Por último, el valor se añadirá al nodo recién creado.Este escenario es para cuando sólo tenemos una raíz en un árbol pero si ya tenemos algún nivel en un árbol de búsqueda binario. Los siguientes pasos se realizan para atravesar el árbol hasta el último nodo (salir) donde se insertará el nuevo nodo.  El siguiente código demuestra el proceso explicado anteriormente en Java: public Nodo raíz;

2 1 8 4 6Borrado de un árbol de búsqueda binario en JavaEl borrado es una tarea relativamente complicada que la inserción, esto se debe a que el borrado depende del nodo que se necesita borrar. Si el nodo a eliminar no tiene hijos (es decir, es una hoja) entonces puede ser fácilmente eliminado del árbol.    Si un nodo tiene un hijo, después de eliminar ese nodo el hijo tiene que ser movido hacia arriba para reemplazar el nodo eliminado.Se vuelve más complicado cuando tenemos que eliminar un nodo con dos hijos. En primer lugar, tenemos que encontrar el nodo con el valor más pequeño en el subárbol de la derecha. Éste sustituirá al nodo eliminado.  El siguiente código muestra los tres escenarios para eliminar un nodo cuando el nodo a eliminar no tiene ningún hijo, 1 hijo o 2 hijos: public void nodeDeletion(Node node)

  Arbol bobo

Eliminación del árbol de búsqueda binario

Los árboles de búsqueda con un solo elemento por nodo y con un máximo de dos hijos son mucho más sencillos de entender y de trabajar que se han convertido probablemente en el árbol de búsqueda más popular que existe. Y tienen algunas operaciones interesantes que pueden utilizarse para mejorar la búsqueda.

Ejercicio: En esta implementación, he codificado el hecho de que estos árboles están hechos de LinkedBinaryTreeNodes. Esto es realmente una cosa mala. Reescribe esto para que los clientes puedan crear nodos de cualquier clase que implemente BinaryTreeNode que deseen.

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad