Está en la página 1de 3

EL ÁRBOL AVL

El árbol AVL es un tipo especial de árbol binario ideado por los matemáticos rusos
Adelson-Velskii y Landis. Fue el primer árbol de búsqueda binario auto-balanceable que
se ideó.

Los árboles AVL están siempre equilibrados de tal modo que para todos los nodos, la
altura de la rama izquierda no difiere en más de una unidad de la altura de la rama
derecha o viceversa. Gracias a esta forma de equilibrio (o balanceo), la complejidad de
una búsqueda en uno de estos árboles se mantiene siempre en orden de complejidad
O(log n). El factor de equilibrio puede ser almacenado directamente en cada nodo o ser
computado a partir de las alturas de los subárboles.

Para conseguir esta propiedad de equilibrio, la inserción y el borrado de los nodos se ha


de realizar de una forma especial. Si al realizar una operación de inserción o borrado se
rompe la condición de equilibrio, hay que realizar una serie de rotaciones de los nodos.

Los árboles AVL más profundos son los árboles de Fibonacci.

Definición formal

Definición de la altura de un árbol

Sea T un árbol binario de búsqueda y sean Ti y Td sus subárboles, su altura H(T), es:

0 si el árbol T contiene solo la raíz

1 + max(H(Ti),H(Td)) si contiene más nodos

Definición de árbol AVL

Un árbol vacío es un árbol AVL

Si T es un árbol no vacío y Ti y Td sus subárboles, entonces T es AVL si y solo si:

Ti es AVL

Td es AVL

| H(Ti) − H(Td) | < = 1

Factor de equilibrio

Cada nodo, además de la información que se pretende almacenar, debe tener los dos
punteros a los árboles derecho e izquierdo, igual que los árboles binarios de búsqueda
(ABB), y además el dato que controla el factor de equilibrio.

El factor de equilibrio es la diferencia entre las alturas del árbol derecho y el izquierdo:
FE = altura subárbol derecho - altura subárbol izquierdo;

Por definición, para un árbol AVL, este valor debe ser -1, 0 ó 1.

Si el factor de equilibrio de un nodo es:

0 -> el nodo está equilibrado y sus subárboles tienen exactamente la misma altura.

1 -> el nodo está desequilibrado y su subárbol derecho es un nivel más alto.

-1 -> el nodo está desequilibrado y su subárbol izquierdo es un nivel más alto.

Si el factor de equilibrio | Fe | > = 2 es necesario reequilibrar.

Árbol de Fibonacci

Se llama árbol de Fibonacci a una variante de árbol binario con la propiedad que el orden
de un nodo se calcula como la sucesión de Fibonacci.
El árbol de Fibonacci se define de la siguiente manera:

El árbol nulo (no contiene ningún nodo) es de orden 0.


El árbol que consta de un único nodo es de orden 1.
Para n > 1, el árbol de Fibonacci de orden n consta de un nodo raíz con el árbol de
Fibonacci de orden n-1 como hijo izquierdo y el árbol de Fibonacci de orden n-2
como hijo derecho.

Dado que este tipo de árbol es un caso particular de un árbol AVL, ya que
el factor de equilibrio de todo nodo es -1, un árbol de Fibonacci es
balanceado con altura O(log n).
Árboles de Fibonacci de orden 1, 2, 3 y 4.

También podría gustarte