ARBOLES A.V.L
Un árbol AVL (llamado así por las iniciales de sus inventores: Adelson-Velskii y Landis) es un árbol binario de búsqueda en el que para cada nodo, las alturas de sus sub-árboles izquierdo y derecho no difieren en más de 1.
No se trata de árboles perfectamente equilibrados, pero sí son lo suficientemente equilibrados como para que su comportamiento sea lo bastante bueno como para usarlos donde los ABB no garantizan tiempos de búsqueda óptimos.
El algoritmo para mantener un árbol A.V.L equilibrado se basa en reequilibrados locales, de modo que no es necesario explorar todo el árbol después de cada inserción o borrado.
OPERACIONES EN ARBOLES A.V.L:
Los AVL son también ABB, de modo que mantienen todas las operaciones que poseen éstos. Las nuevas operaciones son las de equilibrar el árbol, pero eso se hace como parte de las operaciones de insertado y borrado.
Si hay desbalance:
-Rotación hacia la izquierda.
-Rotación hacia la derecha.
-Doble rotación hacia la izquierda.
-Doble rotación hacia la derecha.
y el inorden debe ser igual tanto antes como después de la rotación.
ROTACIÓN HACIA LA IZQUIERDA:
se realiza una rotación a la izquierda cuando un árbol queda desbalanceado a la derecha. y es la acción de 2 apuntadores después de una altura no permitida.
Ejemplo 1:
12, 6, 20, 15, 22, 30.
Tenemos que esta des-balanceado por la derecha; por lo tanto realizamos una rotación hacia la izquierda y nos queda:
Es A.V.L.
Ejemplo 2:
Inorden:
D, B, E, A, F, C, H, G, I, J.
Tenemos que esta des-balanceado por la derecha; por lo tanto realizamos una rotación hacia la izquierda y nos queda:
Es A.V.L.
ROTACIÓN HACIA LA DERECHA:
F.B= Factor de Balance.
1. El nodo indicado por "P" tiene F.B. > 1.
2. El nodo indicado por "Q" tiene F.B.= 1.
Ejemplo:
Inorden:
F, D, B, E, A, C.
Tenemos que esta des-balanceado por izquierda; por lo tanto realizamos una rotación hacia la derecha y nos queda:
Es A.V.L.
DOBLE ROTACIÓN HACIA LA IZQUIERDA:
Se realiza si cumple:
1. El nodo indicado por "p" tiene un factor de balance < 1.
2. El nodo indicado por "q" tienen un factor de balance=1.
Entonces, realizamos una simple rotación hacia la derecha desde "q" y una simple hacia la izquierda desde "p".
Ejemplo:
10, 15, 12.
Si evidenciamos el grafo y los factores de balance de los nodos indicados "p" y "q", tenemos que el F.B. del nodo "p"<1 (cumple la 1ra regla). Y el F.B. del nodo "q"=1 (cumple la 2da regla).
Entonces realizamos los siguiente:
Una rotación hacia la derecha desde el nodo "q"; lo cual nos da como resultado:
Y ahora procedemos a realizar una rotación hacia la izquierda desde el nodo "p"; lo cual no da como resultado:
Ahora si es A.V.L
DOBLE ROTACIÓN HACIA LA DERECHA:
F.B= Factor de Balance.
1. El nodo indicado por "p" tiene F.B. > 1.
2. El nodo indicado por "q" tiene F.B.= -1.
Entonces, realizamos una simple rotación hacia la izquierda desde "q" y una simple hacia la derecha desde "p".
Ejemplo:
Si evidenciamos el grafo y los factores de balance de los nodos indicados "p" y "q", tenemos que el F.B. del nodo "p">1 (cumple la 1ra regla). Y el F.B. del nodo "q"=-1 (cumple la 2da regla).
Entonces realizamos los siguiente:
Una rotación hacia la izquierda desde el nodo "q"; lo cual nos da como resultado:
Y ahora procedemos a realizar una rotación hacia la derecha desde el nodo "p"; lo cual no da como resultado:
Ahora si es A.V.L.