Professional Documents
Culture Documents
RBOLES AA
1. CONCEPTO:
En el campo de informtica se le conoce como rbol binario e bsqueda auto
balanceable utilizado para almacenar y recuperar informacin de manera eficiente. El
nombre de rboles AA se debe a su inventor Arne Anderson.
Son una simplificacin de las reglas de los rboles coloreados y originan un nmero
bastante menor de situaciones que deben ser analizadas
Loa rboles AA son una variacin del rbol-rojo-negro, que a la vez es una mejora del
rbol binario d bsqueda. A diferencia de los rboles rojo-negro, los nodos en un rboles
AA slo pueden aadirse como un hijo derecho. Ningn nodo puede ser un hijo izquierdo,
de esta forma se adeca a un rbol 2-3 en vez de un rbol 2-3-4, lo que simplifica las
operaciones de mantenimiento. Los algoritmos de mantenimiento para un rbol rojonegro necesitan considerar siete diferentes formas para balancear adecuadamente el
rbol. A continuacin observemos el grfico:
Pero ya que el requisito indica que slo los enlaces derechos pueden ser rojos, solo es
necesario considerar 2 formas:
2. ROTACIONES DE BALANCEO
Se diferencia de los rboles rojo-negros porque son generalmente usados con la idea de
un nivel en lugar de un color. Cada nodo tiene un ampo nivel y debe cumplir las
siguientes condiciones para que sea vlido:
1. El nivel de un nodo hoja es uno.
2. El nivel de un hijo izquierdo es estrictamente menor que el de su padre.
3. El nivel de un hijo derecho es menor o igual que el de su padre.
4. El nivel de un nieto derecho es estrictamente menor que el de su abuelo.
Cada nodo de nivel mayor que uno debe tener dos hijos. Se necesitan dos operaciones para que el
-Divisin (Split):
Es una rotacin izquierda condicional que tiene lugar cuando una insercin o un borrado
crea dos enlaces horizontales derechos, pero se corresponde con os enlaces rojos
consecutivos en el contexto de rboles rojo-negro.
3.INSERCIN
Se empieza con una bsqueda en un rbol binario y su procedimiento de insercin, luego,
a medida que se desenrolla la pila de llamadas, es fcil comprobar la validez del rbol y
realizar las rotaciones que se precisen. Si aparece un enlace horizontal izquierdo, se
realiza una torsin, y si aparecen dos enlaces horizontales derechos, se realiza una
divisin, despus incrementando el nivel del nuevo nodo raz del subrbol
correspondiente. Observe que el cdigo de muestra realiza un incremento de nivel (T). Lo
que hace que podamos continuar comprobando la validez del rbol a medida que las
modificaciones suben desde las hojas.
La insercin por la izquierda seguida de una torsin, puede originar una nueva violacin a
las propiedades de los rboles AA. Luego se dibuja en forma convencional, de acuerdo a
los niveles de los nodos. La ilustracin muestra la situacin luego del skew; lo cual
produce el doble rojo, o dos hijos horizontales, debe notarse que el recin insertado es la
nueva raz. La situacin se corrige con una rotacin a la izquierda, respecto del nodo
recin insertado, y luego incrementando el nivel del nodo central. Esta ltima operacin
se denomina partir (Split), y se deriva de los B-tres antecesores de los rboles AA, en los
Ejemplos de insercin.
Si se realiza una insercin de claves en orden ascendente, desde el 1 hasta el 15, se
obtiene luego de las operaciones de re-balance, despus de cada insercin,
inmediatamente luego de insertado el nodo con valor 15.
Se devuelve siguiendo la ruta desde la raz al nodo insertado, pero en forma ascendente.
Como el nodo 15 cumple las propiedades, es un rbol AA; se asciende al 14, que tambin
es AA. Pero al ascender al 13, ste tiene dos hijos horizontales; entonces debe realizarse
un split en el nodo 13. El rbol cuya raz es el nodo con valor 14 es AA, notar que sta es
la raz luego del split.
Al ascender al nodo con valor 12, tambin se cumplen las propiedades de los rboles AA.
Pero al ascender al nodo con valor 10, debe volver a efectuarse un split.
La funcin insertar es
entrada: X, el valor a ser insertado, y T, la raz del rbol en el cual se insertar.
salida: Una versin balanceada de T que incluye a X.
Haz el procedimiento normal de insercin de un rbol de bsqueda binario.
Asigna al hijo correcto el resultado de la llamada recursiva en caso de que
un nodo nuevo fue creado o la raz del subrbol cambi.
si nil(T) entonces
Crea una nueva hoja con X.
devuelve nodo(X, 1, Nil, Nil)
si no si X < valor(T) entonces
izquierda(T) := insertar(X, izquierda(T))
si no si X > valor(T) entonces
derecha(T) := insertar(X, derecha(T))
fin si
Note que el caso X == valor(T) no est especificado. En esta implementacin,
no tendr ningn ejemplo. Se puede cambiar el comportamiento dependiendo de
la implementacin.
Se realiza la torsin y luego la diisin. Las condiciones de si sern hechas ambas
acciones estn dentro de los procedimientos ya descritos arriba.
T := torsin(T)
T := divisin(T)
devuelve T
fin de la funcin
4. RENDIMIENTO
5. TIPOS DE DATOS
Creacin de nodo.
La insercin se produce en las hojas, y siempre en nivel 1. Adems el nuevo nodo tiene sus descendientes
apuntando al centinela.
pnodo getnodo(data valor)
{ pnodo p = (pnodo) malloc(sizeof(nodo));
if (p==NULL) {printf("Error memoria\n"); exit(1);}
else
{ p->clave = valor;
p->left = nil; //apuntan al centinela
p->right = nil;
p->nivel = 1; //hojas en nivel 1.
}
return(p);
}
Operaciones bsicas.
/* rotacin derecha */
pnodo rrot(pnodo t)
{ register pnodo temp=t;
t = t->left;
temp->left = t->right;
t->right = temp;
return (t);
}
/* rotacin izquierda */
pnodo lrot (pnodo t)
if (t->right->right->nivel== t->nivel )
{ /* rotacin izquierda */
temp = t;
t = t->right;
temp->right = t->left;
t->left = temp;
t->nivel = t->nivel +1;
}
return(t);
}
}
CONCLUSIONES.
-Los rboles funcionan similarmente a las listas doblemente enlazadas
-Poseen Diferentes Funciones como insercin y Bsqueda.
-Los arreglos pueden ser modificados.
-Son aplicados con colores.