Arboles avl

Arboles avl

Inserción del árbol Avl

El árbol AVL es un árbol de búsqueda binario equilibrado en altura. Es decir, un árbol AVL es también un árbol de búsqueda binario, pero es un árbol equilibrado. Se dice que un árbol binario está equilibrado si la diferencia entre las alturas de los subárboles izquierdo y derecho de cada nodo del árbol es -1, 0 o +1. En otras palabras, se dice que un árbol binario está equilibrado si la altura de los hijos izquierdo y derecho de cada nodo difiere en -1, 0 o +1. En un árbol AVL, cada nodo mantiene una información extra conocida como factor de equilibrio. El árbol AVL fue introducido en el año 1962 por G.M. Adelson-Velsky y E.M. Landis.

El factor de equilibrio de un nodo es la diferencia entre las alturas de los subárboles izquierdo y derecho de ese nodo. El factor de equilibrio de un nodo se calcula como altura del subárbol izquierdo – altura del subárbol derecho (O) altura del subárbol derecho – altura del subárbol izquierdo. En la siguiente explicación, calculamos como sigue…

En el árbol AVL, después de realizar operaciones como la inserción y la eliminación, tenemos que comprobar el factor de equilibrio de cada nodo del árbol. Si cada nodo satisface la condición del factor de equilibrio, entonces concluimos la operación, de lo contrario debemos equilibrarlo. Cuando el árbol se desequilibra debido a cualquier operación, utilizamos operaciones de rotación para equilibrar el árbol.

  Arboles baratos

Simulador de árbol Avl

Un árbol AVL es una implementación concreta de un árbol de búsqueda binario autoequilibrado. Fue desarrollado en 1962 por los informáticos soviéticos Georgi Maximovich Adelson-Velsky y Yevgeny Mikhailovich Landis y lleva el nombre de sus iniciales.

El siguiente árbol, sin embargo, no es un árbol AVL ya que el criterio AVL (-1 ≤ BF ≤ 1) no se cumple en el nodo 4. Su subárbol izquierdo tiene una altura de 1, y el subárbol derecho, vacío, tiene una altura de -1. La diferencia entre ellos es de -2.

Durante la rotación, el nodo L se mueve a la raíz, y la raíz anterior N se convierte en el hijo derecho de L. El hijo derecho anterior de L, LR se convierte en el nuevo hijo izquierdo de N. Los dos nodos restantes, LL y R permanecen sin cambios en relación con su nodo padre.

Memorizamos el hijo izquierdo leftChild (L en la imagen) del nodo (N en la imagen), sustituimos el hijo izquierdo del nodo por el hijo derecho del hijo izquierdo leftChild.right (LR en la imagen) y luego establecemos el nodo como el nuevo hijo derecho del hijo izquierdo.

Observamos que el criterio AVL no se cumple en la raíz (teniendo un factor de equilibrio de -2). Si ahora -como en el ejemplo anterior- realizáramos una rotación a la derecha, el árbol tendría entonces el siguiente aspecto:

  Arboles de alicante

Equilibrio del árbol Avl

Se observa que el rendimiento en el peor de los casos del BST es el más cercano a los algoritmos de búsqueda lineal, es decir, Ο(n). En los datos en tiempo real, no podemos predecir el patrón de datos y sus frecuencias. Por ello, surge la necesidad de equilibrar los BST existentes.

Los árboles AVL, que llevan el nombre de su inventor Adelson, Velski y Landis, son árboles de búsqueda binaria de altura equilibrada. El árbol AVL comprueba la altura de los subárboles izquierdo y derecho y se asegura de que la diferencia no sea superior a 1. Esta diferencia se denomina factor de equilibrio.

En el segundo árbol, el subárbol izquierdo de C tiene altura 2 y el subárbol derecho tiene altura 0, por lo que la diferencia es 2. En el tercer árbol, el subárbol derecho de A tiene altura 2 y el izquierdo falta, por lo que es 0, y la diferencia es 2 de nuevo. El árbol AVL permite que la diferencia (factor de equilibrio) sea sólo 1.

Las dos primeras rotaciones son simples y las dos siguientes son dobles. Para tener un árbol desequilibrado, necesitamos al menos un árbol de altura 2. Con este sencillo árbol, vamos a entenderlos uno por uno.

Visualización del árbol Avl

En informática, un árbol AVL (llamado así por los inventores Adelson-Velsky y Landis) es un árbol de búsqueda binaria (BST) autoequilibrado. Fue la primera estructura de datos de este tipo que se inventó[2]. En un árbol AVL, las alturas de los dos subárboles hijos de cualquier nodo difieren como máximo en uno; si en algún momento difieren en más de uno, se realiza un reequilibrio para restaurar esta propiedad. La búsqueda, la inserción y la eliminación requieren un tiempo de O(log n) tanto en el caso medio como en el peor, donde

  Arboles manualidad

para las operaciones básicas. Para aplicaciones de búsqueda intensiva, los árboles AVL son más rápidos que los árboles rojo-negro porque están más estrictamente equilibrados[4]. En general, ambos no están equilibrados en peso ni en altura.

Los factores de equilibrio se pueden mantener actualizados conociendo los factores de equilibrio anteriores y el cambio de altura – no es necesario conocer la altura absoluta. Para mantener la información de equilibrio de la AVL, son suficientes dos bits por nodo[8].

Las operaciones de lectura de un árbol AVL implican la realización de las mismas acciones que se llevarían a cabo en un árbol de búsqueda binario no equilibrado, pero las modificaciones tienen que observar y restaurar el equilibrio de altura de los subárboles.

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