A lo largo de la historia en el mbito de la informtica se han generado avances que
respondan a la demanda de acumulacin y organizacin de datos, se buscaba la mejor manera de poder almacenarlas y poder tener una rpida respuesta a la bsqueda de la misma es as que se generan estructuras y una de ellas es la que veremos a continuacin, el rbol AVL es un tipo de rbol binario que ofrece una gran alternativa para el almacenamiento de la informacin.
CONCEPTO Un rbol AVL es un rbol binario de bsqueda que cumple con la condicin de que la diferencia entre las alturas de los sub-arboles de cada nodo es como mucho la unidad. La denominacin de rbol AVL viene dada por los creadores de tal estructura Adelson- Velskii y Landis. En este tipo de estructura el tiempo de las operaciones sobre un rbol binario de bsqueda son O(log n) promedio, pero el peor caso es O(n), donde n es el numero de elementos. Una de las principales caractersticas es que este rbol binario de bsqueda es uno en el cual cada nodo cumple con que todos los nodos de su sub-arbol izquierdo son menores que la raz y todos los nodos de su sub-rbol derecho son mayores que esta. La propiedad de equilibrio que debe cumplir un rbol para ser AVL, asegura que la profundidad del rbol sea O(log n), por lo que las operaciones sobre estas estructuras no debern recorrer mucho para hallar el elemento deseado. Como se ver , el tiempo de ejecucin de las operaciones sobre estos rboles es , a lo sumo O(log n) en el peor caso, donde n es la cantidad de elementos del rbol. Sin embargo y como era de esperarse, esta misma propiedad de equilibrio de los arboles AVL implica una dificultad a la hora de INSERTAR o ELIMINAR elementos, estas operaciones pueden no conservar dicha propiedad.
FACTOR DE CORRECCION Cada nodo, adems de la informacin que se pretenda almacenar, debe tener nuevo: el factor de equilibrio. los dos punteros a los arboles derecho izquierdo,igual que los ABB, y adems un miembro El factor de equilibrio es la diferencia entre las alturas del rbol derecho e izquierdo. FE= ALTURA DEL SUB-ARBOL DERECHO ALTURA DEL SUB-ARBOL IZQUIERDO - Por definicin el factor de equilibrio debe de tener los siguientes valores para asegurar que el rbol AVL esta equilibrado : 1 , 0 -1
OPERACIONES BUSCAR UNE ELEMENTO Cuando se desea buscar un elemento dentro de una estructura, como el rbol AVL en primer lugar se debe comparar el elemento que se busca con el nodo Raz buscando la coincidencia de valores, de no ser asi se sigue comparando esta vez para determinar si el elemento que se busca es mayor o menor que la Raiz para que pase al siguiente nodo en el sub-rbol derecho o si fuera menor seguir al siguiente nodo del sub-rbol izquierdo hasta llegar al ltimo nodo en donde, de no hallarse la coincidencia se considerara que el elemento a buscar no se encuentra dentro de la estructura.
INSERTAR UN ELEMENTO Para poder insertar un elemento en primer lugar se debe comparar el elemento a insertar con el nodo raz y determinar si ste es mayor para que pase al siguiente nodo en el sub- rbol derecho o si fuera menor seguir al siguiente nodo del sub-rbol izquierdo hasta llegar al ltimo nodo en donde podr almacenarse. Al insertar un elemento es posible que ste quede desbalanceado para lo cual habr que volver a equilibrarlo utilizando Rotaciones.
EJEMPLO A continuacin se presenta la insercin a un rbol AVL (elemento 3).
BORRAR UN ELEMENTO El procedimiento para borrar un elemento es muy similar al de la Insercin, ya que se debe comparar el valor del elemento que se desea borrar de modo que si se encuentra la coincidencia se habr encontrado el elemento que se desea borrar, de otro modo el proceso de eliminacin quedara sin efecto en la estructura. EJEMPLO Si eliminamos del siguiente rbol, el nodo3, el rbol se desequilibra en el nodo2.
Tras aplicar una rotacin simple:
ROTACIONES El reequilibrado se produce de abajo hacia arriba sobre los nodos en los que se produce el desequilibrio. Pueden darse dos casos: rotacin simple o rotacin doble. La rotacin simple a la izquierda tanto como a la derecha se basan en los mismos principios, y a su vez comparten el mismo procedimiento con la diferencia que una se desarrolla en el sub-rbol izquierdo y en el sub-rbol derecho respectivamente.
ROTACION SIMPLE A LA DERECHA/IZQUIERDA De un rbol de raz r y de hijos izquierdo i y derecho d,lo que se hace es formar un nuevo rbol cuya raz del hijo izquierdo, como hijo izquierdo colocamos el hijo izquierdo de i y como hijo derecho construimos un nuevo rbol que tendr como raz, la raz del rbol r, el hijo derecho de i, d ser el hijo izquierdo y el hijo derecho ser el hijo derecho del rbol d.
Ejemplo: En el siguiente ejemplo se muestra que el desbalance se halla en el nodo que contiene el numero 3 .
ROTACION DOBLE A LA DERECHA/IZQUIERDA Esta rotacin se usar cuando el subrbol izquierdo de un nodo sea 2 unidades ms alto que el derecho, es decir, cuando su FE sea de -2. Y adems, la raz del subrbol izquierdo tenga una FE de 1, es decir, que est cargado a la derecha. Este es uno de los posibles rboles que pueden presentar esta estructura, pero hay otras dos posibilidades. El nodo R puede tener una FE de -1, 0 1. En cada uno de esos casos los rboles izquierdo y derecho de R (B y C) pueden tener alturas de n y n-1, n y n, o n-1 y n, respectivamente. El modo de realizar la rotacin es independiente de la estructura del rbol R, cualquiera de las tres produce resultados equivalentes. Haremos el anlisis para el caso en que FE sea -1. En este caso tendremos que realizar dos rotaciones. Llamaremos P al nodo que muestra el desequilibrio, el que tiene una FE de -2. Llamaremos Q al nodo raz del subrbol izquierdo de P, y R al nodo raz del subrbol derecho de Q. 1. Haremos una rotacin simple de Q a la izquierda. 2. Despus, haremos una rotacin simple de P a la derecha. Con ms detalle, procederemos del siguiente modo: 1. Pasamos el subrbol izquierdo del nodo R como subrbol derecho de Q. Esto mantiene el rbol como ABB, ya que todos los valores a la izquierda de R siguen estando a la derecha de Q. 2. Ahora, el nodo R pasa a tomar la posicin del nodo Q, es decir, hacemos que la raz del subrbol izquierdo de P sea el nodo R en lugar de Q. 3. El rbol Q pasa a ser el subrbol izquierdo del nodo R. 4. Pasamos el subrbol derecho del nodo R como subrbol izquierdo de P. Esto mantiene el rbol como ABB, ya que todos los valores a la derecha de R siguen estando a la izquierda de P. 5. Ahora, el nodo R pasa a tomar la posicin del nodo P, es decir, hacemos que la entrada al rbol sea el nodo R, en lugar del nodo P. Como en los casos anteriores, previamente, P puede que fuese un rbol completo o un subrbol de otro nodo de menor altura. 6. El rbol P pasa a ser el subrbol derecho del nodo R. Imgenes de una rotacin doble a la derecha.
RECORRIDOS Los principales recorridos que se ejecutan en los arboles AVL son IN-ORDEN, PRE- ORDEN Y POST-ORDEN, estos recorridos se diferencian en el orden que visitan y leen la raz ,sub-rbol izquierdo y sub-rbol derecho. IN-ORDEN.- Recorrer en in-orden el sub-arbol izquierdo, visitar el elemento de la raz y luego visitar en in-orden el sub-arbol derecho. PRE-ORDEN.-Visitar el elemento de la raz, recorrer en pre-orden el sub-arbol izquierdo y luego recorrer en pre-orden el subrbol derecho. POST-ORDEN.- Recorrer en post-orden el sub-arbol izquierdo, luego recorrer en post- orden el subrbol derecho y finalmente visitar el elemento de la raz.