Vous êtes sur la page 1sur 5

Con Clase C con Clase Indice Anterior Siguiente

Captulo 8 rboles AVL:


8.1 rboles equilibrados
Ya vimos al final del captulo anterior que el comportamiento de los ABB no es siempre tan bueno como nos gustara. Pues bien, para minimizar el problema de los ABB desequilibrados, sea cual sea el grado de desequilibrio que tengan, se puede recurrir a algoritmos de equilibrado de rboles globales. En cuanto a estos algoritmos, existen varios, por e emplo, crear una lista mediante la lectura en inorden del rbol, ! volver a reconstruirlo equilibrado. "onociendo el n#mero de elementos no es demasiado complicado. El problema de estos algoritmos es que requieren explorar ! reconstruir todo el rbol cada vez que se inserta o se elimina un elemento, de modo que lo que ganamos al acortar las b#squedas, teniendo que $acer menos comparaciones, lo perdemos equilibrando el rbol. Para resolver este inconveniente podemos recurrir a los rboles A%&.

8.2 Definicin
'n rbol A%& (llamado as por las iniciales de sus inventores) Adelson*%els+ii ! &andis, es un rbol binario de b#squeda en el que para cada nodo, las alturas de sus subrboles izquierdo ! derec$o no difieren en ms de -. .o 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%& equilibrado se basa en reequilibrados locales, de modo que no es necesario explorar todo el rbol despu0s de cada inserci/n o borrado.

8.3

peraciones en AVL

&os A%& son tambi0n ABB, de modo que mantienen todas las operaciones que poseen 0stos. &as nuevas operaciones son las de equilibrar el rbol, pero eso se $ace como parte de las operaciones de insertado ! borrado.

8.! "actor de equilibrio

"ada nodo, adems de la informaci/n que se pretende almacenar, debe tener los dos punteros a los rboles derec$o e izquierdo, igual que los ABB, ! adems un miembro nuevo) el factor de equilibrio. El factor de equilibrio es la diferencia entre las alturas del rbol derec$o ! el izquierdo)
FE = altura subrbol derecho - altura subrbol izquierdo;

Por definici/n, para un rbol A%&, este valor debe ser *-, 1 / -.

8.# $otaciones si%ples de nodos


&os reequilibrados se realizan mediante rotaciones, en el siguiente punto veremos cada caso, a$ora vamos a ver las cuatro posibles rotaciones que podemos aplicar.

Rotacin simple a la derecha (SD):


Esta rotaci/n se usar cuando el subrbol izquierdo de un nodo sea 2 unidades ms alto que el derec$o, es decir, cuando su 3E sea de *2. Y adems, la raz del subrbol izquierdo tenga una 3E de *-, es decir, que est0 cargado a la izquierda.

Procederemos del siguiente modo) &lamaremos P al nodo que muestra el desequilibrio, el que tiene una 3E de *2. Y llamaremos 4 al nodo raz del subrbol izquierdo de P. Adems, llamaremos A al subrbol izquierdo de 4, B al subrbol derec$o de 4 ! " al subrbol derec$o de P. En el grfico que puede observar que tanto B como " tienen la misma altura (n,, ! A es una unidad ma!or (n5-,. Esto $ace que el 3E de 4 sea *-, la altura del subrbol que tiene 4 como raz es (n52, ! por lo tanto el 3E de P es *2. -. Pasamos el subrbol derec$o del nodo 4 como subrbol izquierdo de P. Esto mantiene el rbol como ABB, !a que todos los valores a la derec$a de 4 siguen estando a la izquierda de P. 2. El rbol P pasa a ser el subrbol derec$o del nodo 4.

6. A$ora, el nodo 4 pasa a tomar la posici/n del nodo P, es decir, $acemos que la entrada al rbol sea el nodo 4, en lugar del nodo P. Previamente, P puede que fuese un rbol completo o un subrbol de otro nodo de menor altura.

En el rbol resultante se puede ver que tanto P como 4 quedan equilibrados en cuanto altura. En el caso de P porque sus dos subrboles tienen la misma altura (n,, en el caso de 4, porque su subrbol izquierdo A tiene una altura (n5-, ! su subrbol derec$o tambi0n, !a que a P se a7ade la altura de cualquiera de sus subrboles.

Rotacin simple a la izquierda (SI):

8e trata del caso sim0trico del anterior. Esta rotaci/n se usar cuando el subrbol derec$o de un nodo sea 2 unidades ms alto que el izquierdo, es decir, cuando su 3E sea de 2. Y adems, la raz del subrbol derec$o tenga una 3E de -, es decir, que est0 cargado a la derec$a.

Procederemos del siguiente modo) &lamaremos P al nodo que muestra el desequilibrio, el que tiene una 3E de 2. Y llamaremos 4 al nodo raz del subrbol derec$o de P. Adems, llamaremos A al subrbol izquierdo de P, B al subrbol izquierdo de 4 ! " al subrbol derec$o de 4. En el grfico que puede observar que tanto A como B tienen la misma altura (n,, ! " es una unidad ma!or (n5-,. Esto $ace que el 3E de 4 sea -, la altura del subrbol que tiene 4 como raz es (n52, ! por lo tanto el 3E de P es 2. -. Pasamos el subrbol izquierdo del nodo 4 como subrbol derec$o de P. Esto mantiene el rbol como ABB, !a que todos los valores a la izquierda de 4 siguen estando a la derec$a de P. 2. El rbol P pasa a ser el subrbol izquierdo del nodo 4. 6. A$ora, el nodo 4 pasa a tomar la posici/n del nodo P, es decir, $acemos que la entrada al rbol sea el nodo 4, en lugar del nodo P. Previamente, P puede que fuese un rbol completo o un subrbol de otro nodo de menor altura.

En el rbol resultante se puede ver que tanto P como 4 quedan equilibrados en cuanto altura. En el caso de P porque sus dos subrboles tienen la misma altura (n,, en el caso de 4, porque su subrbol izquierdo A tiene una altura (n5-, ! su subrbol derec$o tambi0n, !a que a P se a7ade la altura de cualquiera de sus subrboles.

Vous aimerez peut-être aussi