Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arboles AVL y B PDF
Arboles AVL y B PDF
Un AVL es un ABB
5.6.1 Rotaciones
Para mantener un rbol AVL balanceado se debe tener en cuenta que luego de cada
insercin o eliminacin no se pierda la propiedad que la diferencia entre las alturas de los
subrboles derecho e izquierdo no debe excederse en ms de 1 para cada nodo del rbol,
por lo cual se debe verificar esta condicin y corregirla en caso que suceda. Para llevar a
cabo la correccin, en la diferencia de las alturas de los subarboles, existe un concepto de
rotaciones en donde por medio de a lo sumo dos rotaciones entre los nodos se puede
volver a balancear el rbol. A continuacin se describen los casos que se pueden
presentar de rotaciones, y la forma de realizarlas para devolver al rbol la condicin de
balanceo.
5.7 rboles B1
rboles de Bsqueda
Un rbol de bsqueda es un tipo especial de rbol que sirve para guiar la bsqueda de un valor.
Un rbol de bsqueda de orden q=2*t+1 es un rbol tal que cada nodo contiene, cuando ms, 2*t
valores de bsqueda y 2*t+1 referencias a nodos en el orden <P1, k1, P2, k2, , Pq-1, Kq-1, Pq> ,
donde q <= 2*t+1, cada Pi es una referencia a un nodo hijo (puede ser vaco) y cada Ki es un valor
de bsqueda proveniente de algn conjunto ordenado de valores. Se supone que todos los valores
de bsqueda son nicos. Un rbol de bsqueda debe cumplir, en todo momento, las siguientes
restricciones:
1. Dentro de cada nodo K1 < K2 < .< Kq-1
2. Para todos los valores de X, del subrbol al cual refiere Pi , tenemos que Ki-1 < X < Ki , para
1 < i < q; X < Ki , para i = 1 y X > Ki-1 para i = q.
La figura 1 muestra un nodo de un rbol de bsqueda. En ella se pueden apreciar de manera ms
clara, las condiciones que impone la restriccin 2.
Al buscar, insertar o eliminar un valor X siempre se sigue la referencia Pi apropiada, de acuerdo
con las condiciones de la segunda restriccin.
.
Para insertar valores de bsqueda en el rbol y eliminarlos, sin violar las restricciones anteriores,
se utilizan algoritmos que no garantizan que el rbol de bsqueda est equilibrado (que todas las
hojas estn al mismo nivel).
Aclaracin de autora: este texto fue adaptado de una monografa publicada originalmente por Lic. Joel
Arencibia Ramrez
Es importante mantener equilibrados los rboles de bsqueda porque esto garantiza que no habr
nodos en niveles muy profundos que requieran muchas comparaciones durante una bsqueda.
Adems, las eliminaciones de valores pueden hacer que queden nodos casi vacos, con lo que hay
un desperdicio de espacio importante que tambin provoca un aumento en el nmero de niveles y
por ende un mayor costo potencial en la bsqueda de un elemento.
Nota: Por una cuestin de simplicidad de los grficos, en adelante slo se representarn las
referencias a rboles.
A continuacin se muestran dos rboles. Uno de ellos es un rbol B, en cambio, el otro no. El rbol
de la figura 3.1 es un rbol B correcto, pues cumple con todas las reglas en cuanto a su
estructura y orden. En cambio, el de la figura 3.2 no es un rbol B, ya que a pesar de mantener el
orden, hay un nodo (que no es la raz) que tiene menos de t elementos (en este caso menos de 2
elementos). Este nodo es el que contiene al elemento 10.
El nmero de acceso a disco en un rbol B es proporcional a la altura del rbol, el caso peor para
la altura es cuando la raz tiene un solo valor y el resto de los nodos tiene el mnimo permitido t.
La siguiente figura nos muestra la cantidad de nodos por cada nivel del rbol.
h-1
Generalizando, para un rbol de altura h, la cantidad de nodos que tiene el ltimo nivel sera 2t .
La cantidad de nodos n, que tiene un rbol B cumple con lo siguiente:
Obtenemos que:
nuevo nodo que se debe crear, que pasar a ser la nueva raz del rbol, creando un nuevo nivel
cada vez que se divida la raz.
Es importante hacer notar la curiosa manera de crecer en altura que tienen los rboles B, que lo
hacen hacia la raz, a diferencia de los comnmente utilizados, cuyas inserciones se realizan en
forma de hojas y por tanto crecen en sentido inverso al rbol B. Esto es muy importante, porque
garantiza que en el rbol B, todas las hojas estn en el mismo nivel y por tanto, est balanceado.
No hay espacio para almacenar el valor en nodo, por lo tanto, este nodo debe dividirse,
promocionando el valor que queda en el medio, en este caso, el 65:
Ahora tenemos que promocionar el valor intermedio, insertndolo en el nodo padre. Como el valor
promocionado, pudo insertarse sin dificultad en el nodo padre, el proceso termina.
Ej. 2 Veamos otro ejemplo que implicar que aumente la altura del rbol. Supongamos que
tenemos un rbol con esta estructura, y queremos insertar el valor 68:
En primer lugar, dividimos nodo en dos, repartimos los valores y promocionamos el valor
intermedio, el 69:
Y otra vez repetimos el proceso, al tratar de insertar el 65 en el nodo padre del nodo que se dividi,
vemos que este no existe, porque el nodo que se acaba de dividir era la raz. En este caso, se crea
un nuevo nodo en el que se inserta el valor promovido y se actualizan las referencias. Note la
variacin en la altura del rbol y su crecimiento hacia la raz.
Segn el algoritmo debemos sustituir el valor por el siguiente valor, es decir, el 25.
Ahora estamos en el mismo caso que antes, slo hay que borrar el valor 25 del nodo hoja:
La primera parte es fcil, bastar eliminar la clave, pero el resultado es que slo queda una clave
en el nodo, y debe haber al menos dos claves en un nodo de cuatro.
Ej. 4 Vamos a ver el caso en que el nodo derecho no tiene valores suficientes para transferir uno
al nodo hoja. Eliminaremos el valor 5:
La primera parte es igual que el caso anterior, eliminamos el valor 5. Pero ahora el nodo derecho
tiene el nmero mnimo de valores.
Segn el algoritmo, debemos fundir en el nodo hoja, los valores del nodo hoja, el valor del padre y
los del nodo derecho. Y despus eliminar el nodo derecho.
La cosa no termina ah, ahora debemos comprobar el nodo padre, ya que tambin ha podido
quedar con menos claves que el mnimo exigido. En este caso sucede eso, pero es un caso
especial, ya que ese nodo es raz y puede contener menos claves que nmero mnimo.
Ej. 5 Veamos cmo sera el proceso en un caso general, que implica la reduccin de altura del
rbol.
Borraremos la clave 65 de este rbol:
A continuacin eliminamos el valor 67 del nodo hoja, y comprobamos que el nodo tiene menos
valores del mnimo. Buscamos el nodo derecho
El nodo derecho tiene justo el nmero mnimo de claves, por lo tanto tenemos que fusionar hoja
con derecho y con un valor de padre. Y eliminamos el nodo derecho.
Ahora el nodo hoja es el padre del anterior nodo hoja. De nuevo comprobamos que tiene menos
claves que el mnimo, as que buscamos el nodo derecho, como no existe, buscamos el izquierdo.
Y de nuevo comprobamos que el izquierdo tiene justo el nmero mnimo de valores.
Ahora fusionamos en el nodo izquierdo con el nodo hoja y con una clave del nodo padre, y
eliminamos el nodo hoja, como adems el nodo padre es la raz y ha quedado vaca, lo
eliminaremos y el nodo raz ser el izquierdo: