¿Qué es una explicación intuitiva de inserción en un árbol AVL?

No estoy seguro de si mi respuesta satisfará suficientemente tu curiosidad, pero déjame seguir adelante y darle una oportunidad.

Antes de llegar a la magia que son las operaciones de inserción y eliminación de un árbol AVL, recopilemos algunos antecedentes. Primero, existían árboles binarios que simplemente seguían una propiedad directa: el nodo raíz es un padre y puede tener un máximo de dos hijos. Y cada niño más adelante sigue la misma propiedad si hay más elementos para insertar. Ninguna otra propiedad ni restricciones.

(Un árbol binario)

Aunque esto era bonito y todo eso, no tenía ningún propósito superior en lugar de simplemente almacenar los elementos como un árbol. La búsqueda de una mejor manera de usar esta propiedad condujo a lo que se conoció como el Árbol de búsqueda binaria. El último punto de venta de un árbol de búsqueda binario, como su nombre lo indica, es su propiedad de búsqueda. Buscar un elemento en un árbol binario es casi similar a buscar un elemento en una matriz no ordenada. La complejidad de encontrar un elemento en un árbol binario es [math] O (n) [/ math]. Pero si introduce una nueva propiedad, la complejidad del tiempo de búsqueda se reduce a [math] O (log n) [/ math]. Esto se debe a una técnica llamada búsqueda binaria que también se puede utilizar en una matriz ordenada. Un árbol de búsqueda binario o un bst tiene una propiedad adicional que dice que todos los hijos izquierdos son menores que la raíz y todos los hijos derechos son mayores que la raíz. Esta propiedad nos ayudó a modificar el árbol binario y, al mismo tiempo, nos ahorró mucho tiempo de búsqueda.


(Un árbol de búsqueda binario)

Pero había un problema con un árbol de búsqueda binario. Cuando los elementos no estaban disponibles en un orden conveniente, el árbol de búsqueda binario seguía creciendo en una dirección particular y se veía así:


Se ve tonto, ¿no? Entonces idearon un concepto llamado balancear un árbol de búsqueda binario que esencialmente mantiene la altura de un árbol de búsqueda binario al mínimo. Después de equilibrar el árbol anterior se vería así:


Esto se ve bien, ¿no?

Por lo tanto, los informáticos no querían hacer esta actividad mundana de equilibrar un árbol de búsqueda binario cada vez que se introduce un nuevo nodo. Como resultado, introdujeron una propiedad más llamada equilibrio. Los árboles AVL no son más que árboles de búsqueda binarios que tienen una capacidad especial llamada auto-equilibrio. Entonces, cada vez que se introduce un nuevo nodo, el árbol AVL verifica si la altura del árbol es mínima. Si no, gira y trata de hacer que la altura sea mínima.

Por ejemplo, considere el siguiente árbol:


Si introduzco un nuevo elemento, digamos 19, el árbol perderá su propiedad de altura mínima. Lo que significa que, el árbol puede bajar aún más de altura. Para lo cual desplazará los elementos 16 y 18, y hará que 18 sea el nodo raíz de ese subárbol particular y que 16 y 19 sean sus hijos. Esta rotación tendrá lugar de forma recursiva cada vez que se viole la altura mínima. La siguiente imagen hace un buen trabajo al describir los múltiples casos que surgirían al insertar elementos en un árbol AVL.

Imágenes cortesía: Wikipedia.

Vignesh ya te ha dado una idea de los árboles AVL. Aunque es una explicación muy detallada, pero no del tipo que estabas buscando. Al igual que usted, estaba buscando una explicación intuitiva de los árboles AVL para obtener una comprensión clara de los árboles AVL. Busqué en Google y me topé con este enlace http://www.mathcs.emory.edu/~che

Este es el mejor recurso disponible en Internet y ofrece una excelente explicación pictórica de este “árbol de auto-equilibrio”. Felicitaciones al sitio que, ahora puedo imaginar visualmente el proceso de inserción. 😉

Algunos otros recursos que me ayudaron son,

  • Wikipedia – Árboles AVL
  • IIT Delhi Data Structures por el Dr. Naveen Garg
  • La explicación de GeeksForGeeks también fue buena, pero no tan clara como los recursos mencionados anteriormente. Puede consultarla para obtener el código.

1. Inserte la clave dada en el árbol AVL similar a la inserción BST.
2. Actualizar la altura del nodo actual.
3. Si se altera el equilibrio del árbol, aplique una rotación adecuada para cambiar el árbol al estado equilibrado.
Consulte estas publicaciones para obtener una explicación intuitiva sobre cómo se realiza el equilibrio.
Árbol AVL | Lo esencial
Árbol AVL | Inserción
Árbol AVL | Supresión
La explicación dada aquí con los diagramas hace que sea más fácil de entender.

Sin entrar en detalles, diría que el árbol AVL o el árbol RB son una mejora con respecto a las operaciones BST como (Búsqueda, Inserción, Eliminación), por ejemplo, el tiempo de inserción para BST en el peor de los casos es O (n) considere cuando haya ordenado elementos en BST, por lo que será completamente La complejidad sesgada correcta y el tiempo para todas estas operaciones será O (n), para mejorar este árbol AVL aparece en la imagen para que podamos reducir el tiempo de tales operaciones a O (log) mediante el uso de la rotación, que se utiliza para minimizar la complejidad, para más detalles puede referirse al árbol AVL