Anda di halaman 1dari 105

Estructuras de Datos y Algoritmos

Tema 4: rboles
Departamento de Informtica
Universidad de Valladolid

Curso 2011-12

Grado en Ingeniera Informtica


Grado en Ingeniera Informtica de Sistemas

10 Sep. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

1. DEFINICIONES Y
PROPIEDADES

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

Definiciones (I)

Un rbol consiste en un nodo (r, denominado nodo raiz) y una


lista o conjunto de subrboles (A1, A2, .. Ak).

Si el orden de los subrboles importa, entonces forman una lista,


y se denomina rbol ordenado (por defecto un rbol se supone
que es ordenado). En caso contrario los subrboles forman un
conjunto, y se denomina rbol no ordenado.

Se definen como nodos hijos de r a los nodos raices de los


subrboles A1, A2, .. Ak

Si b es un nodo hijo de a entonces a es el nodo padre de b

Un nodo puede tener cero o ms hijos, y uno o nngun padre. El


nico nodo que no tiene padre es el nodo raz del rbol.

Un nodo sin hijos se denomina nodo hoja o externo. En caso


contrario se denomina nodo interno.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Definiciones (II)

Se define un camino en un arbol como cualquier secuencia de


nodos del arbol, n1 ... np, que cumpla que cada nodo es padre del
siguiente en la secuencia (es decir, que ni es el padre de ni+1). La
longitud del camino se define como el nmero de nodos de la
secuencia menos uno (p-1).

Los descendientes de un nodo


(c en el diagrama) son aquellos
nodos accesibles por un camino
que comience en el nodo.

Los ascendientes de un nodo


(f en el diagrama) son los nodos
del camino que va desde la raiz
a l.

11 Feb. 2011

a
b

c
e

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

d
f
g

c
e

d
f
g

Altura

Se define la altura de un nodo en un arbol


como la longitud del camino ms largo que
comienza en el nodo y termina en una hoja.

La altura de un nodo hoja es 0

La altura de un nodo es igual a la mayor


altura de sus hijos + 1

La altura de un rbol se define como la


altura de la raiz.

La altura de un arbol determina la eficiencia


de la mayora de operaciones definidas sobre
rboles.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

3
0

2
0

0
1
0

Profundidad

Se define la profundidad de un nodo en un arbol como la


longitud del camino (nico) que comienza en la raz y
termina en el nodo. Tambin se denomina nivel.

La profundidad de la raiz es 0

La profundidad de un nodo es igual a la profundidad de su


padre + 1
3
0

2
0

Altura

11 Feb. 2011

Nivel 0

0
0

1
0

1
2

Profundidad

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Nivel 1

Nivel 2

Nivel 3

Recorrido de rboles

Preorden: Se pasa por la raiz y luego se recorre en preorden


cada uno de los subrboles. Recursivo.

Postorden: Se recorre en postorden cada uno de los subrboles


y luego se pasa por la raiz. Recursivo.

Inorden: Se recorre en inorden el primer subrbol (si existe). Se


pasa por la raz y por ltimo se recorre en inorden cada uno de
los subrboles restantes. Tiene sentido fundamentalmente en
rboles binarios. Recursivo.

Por Niveles: Se etiquetan los nodos segn su profundidad (nivel).


Se recorren ordenados de menor a mayor nivel, a igualdad de
nivel se recorren de izquierda a derecha.

11 Feb. 2011

No recursivo: Se introduce el raiz en una cola y se entra en un bucle


en el que se extrae de la cola un nodo, se recorre su elemento y se
insertan sus hijos en la cola.
Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Recorrido de rboles (II)

Preorden:

a,b,c,e,f,g,d

Postorden:

b,e,g,f,c,d,a

Inorden:

b,a,e,c,g,f,d

Por Niveles:

a,b,c,d,e,f,g

a
b

Parentizado sobre subrboles:

Preorden:

a (b) (c (e) (f (g))) (d)

Postorden:

(b) ((e) ((g) f) c) (d) a

Inorden:

(b) a ((e) c ((g) f)) (d)

Por Niveles:

(a) (b c d) (e f) (g)

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Expresiones matemticas

Preorden Notacin prefija : * 1 + ^ 3 4 2

Postorden Notacin postfija: 1 3 4 ^ 2 + *

Inorden Notacin habitual: 1 * ((3 ^ 4) + 2)


Evaluacin de expresiones

*
1

+
^
3

11 Feb. 2011

2
4

Serecorreelarbolenpostorden:
Siesunoperando,seinsertaenpila
Siesunoperador:
Seextraendosoperandos
Seaplicaeloperador
Seinsertaenpilaelresultado
Alfinal,lapiladebecontenerun
nicovalor,elresultado.
Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Interludio en Haskell (I)


Unarbolesunnodoquecontieneunelemento,
detipogenricoa,yunalistaderboles
data Arbola=Nodoa[Arbola]
Arboldetest
test::ArbolChar
test=Nodo'a'[(Nodo'b'[]),(Nodo'c'[(Nodo'e'[]),
(Nodo'f'[(Nodo'g'[])])]),(Nodo'd'[])]
Comprobacindesiunnodoesunahoja
esHoja::Arbola>Bool
esHoja(Nodo_[])=True
esHoja_=False
Valormximodeunalista
maxlis::(Orda)=>[a]>a
maxlislis=foldl1 max lis

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

10

Interludio en Haskell (II)


Alturadeunrbol
altura::Arbola>Int
altura(Nodo_[])=0
altura(Nodo_lis)=1+maxlis(map alturalis)
Convierteunalistadelistasenunalista,concatenndolas
aplanar::[[a]]>[a]
aplanar[]=[]
aplanarlis=foldl1 (++)lis
Recorridoenpreorden
preorden::Arbola>[a]
preorden(Nodox[])=[x]
preorden(Nodoxlis)=x: aplanar(map preordenlis)

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

11

Interludio en Haskell (III)


Recorridoenpostorden
postorden::Arbola>[a]
postorden(Nodox[])=[x]
postorden(Nodoxlis)=(aplanar(map postordenlis))++ [x]
Recorridoeninorden
inorden::Arbola>[a]
inorden(Nodox[])=[x]
inorden(Nodox(a1:res))=(inordena1)++ [x]++
(aplanar(map inordenres))
Recorridoporniveles
niveles::Arbola>[a]
nivelesa=nivcol[a]where auxiliar,procesacola
nivcol[]=[]
nivcol((Nodoxlis):res)=x: nivcol(res++ lis)
11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

12

2. REPRESENTACIONES
DEL TAD DIRECTORIO

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

13

Representaciones

Las representaciones del TAD Directorio (elementos


con relacin de jerarqua) suelen ser representaciones
enlazadas, donde cada nodo almacena enlaces al
nodo padre y/o a los nodos hijos.

El nico nodo distinguido es el nodo raz.

El mtodo ms habitual de realizar las operaciones es


mediante un iterador (cursor) que marca un nodo
concreto que sirve de referencia.

Otra posibilidad es indicar un nodo concreto mediante


el camino de la raiz a ese nodo.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

14

Padre - primer hijo - hermano

Los nodos tienen un nmero fijo de


enlaces: al padre, al primer hijo y al
siguiente hermano.

La lista de hijos esta representada


como una lista enlazada.
a
b

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

15

3. RBOLES BINARIOS

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

16

rboles binarios

rbol binario: Es un rbol que o bien esta vaco (sin contenido)


o bien consta de un nodo raiz con dos subrboles binarios,
denominados izquierdo y derecho.

La existencia de rboles vacos es una convencin para que no


exista ambigedad al identificar el subarbol izquierdo y derecho. Se
representa por un cuadrado.

La altura de un rbol vaco es -1

Cada nodo puede tener 0 hijos


(subrbol izquierdo y derecho
vacos), 1 hijo (algn subrbol
vaco) o 2 hijos.

a
c

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

f
g

17

Variantes de rboles binarios

rbol estricto: Si un subrbol est vaco, el otro tambin. Cada


nodo puede tener 0 2 hijos.

rbol lleno: rbol estricto donde en cada nodo la altura del


subrbol izquierdo es igual a la del derecho, y ambos subrboles
son rboles llenos.

rbol completo: Arbol lleno hasta el penltimo nivel. En el ltimo


nivel los nodos estn agrupados a la izquierda.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

18

rboles completos (I)

Los rboles llenos son los rboles con mximo nmero de nodos
(n) para una altura (h) dada. Se cumple que n = 2h+1-1

El nmero de nodos de un rbol lleno slo puede ser una potencia


de dos menos uno: 1, 3, 7, 15, 31,

Los rboles completos pueden almacenar cualquier nmero de


nodos y se sigue cumpliendo que su altura es proporcional al
logaritmo del nmero de nodos: h O(log n)

Adems tienen la propiedad de que conocido el recorrido por


niveles del rbol es posible reconstruirle:
a
Completo,
nico.

a
b
d
11 Feb. 2011

a
b

c
e

No completo,
indistinguibles

c
e

b
c

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

f
19

rboles completos (II)

Es posible almacenar un rbol completo en un vector en el orden


dado por su recorrido por niveles, y a partir del ndice de un
elemento en el vector conocer el ndice de su nodo padre y los
de sus nodos hijos:

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

20

4. MONTCULOS (BINARIOS)

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

21

Montculo

Un montculo (binario) es un arbol completo cuyos nodos


almacenan elementos comparables mediante y donde todo
nodo cumple la propiedad de montculo:

Propiedad de montculo: Todo nodo es menor que sus


descendientes. (montculo de mnimos).
Menor
Mayores
Menor
Mayores

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

22

Ejemplo

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

23

Propiedades del Montculo

El nodo raz (en primera posicin del vector) es el mnimo.

La altura de un montculo es logartmica respecto al nmero de


elementos almacenados (por ser arbol completo).

Si un slo elemento no cumple la propiedad de montculo, es


posible restablecer la propiedad mediante ascensos sucesivos
en el rbol (intercambindole con su padre) o mediante
descensos en el rbol (intercambindole con el mayor de sus
hijos). El nmero de operaciones es proporcional a la altura.

Para insertar un nuevo elemento se situa al final del vector


(ltima hoja del rbol) y se asciende hasta que cumpla la
propiedad.

Para eliminar la raiz se intercambia con el ltimo elemento (que


se elimina en O(1)) y se desciende la nueva raiz hasta que
cumpla la propiedad.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

24

Utilidad

Un montculo es una representacin extremadamente til para el


TAD Cola de Prioridad:

El acceso al mnimo es O(1).

La insercin por valor es O(log n) (tiempo amortizado).

El borrado del mnimo es O(log n).

No usa una representacin enlazada, sino un vector.

La creacin a partir de un vector es O(n) y no requiere espacio


adicional.

El borrado o modificacin de un elemento, conocida su posicin en


el montculo, es O(log n).

Existen otras operaciones para las que no se comporta bien:

Para la bsqueda y acceso al i-simo menor se comporta igual


que un vector desordenado.

La fusin de montculos (binarios) es O(n)

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

25

Representacin (Java)
public class Monticulo<E>implements ColaPrioridad<E>{
//Vectorquealmacenaloselementos,loshijosdevec[n]
//sonvec[2*n+1]yvec[2*n+2].Elpadreesvec[(n1)/2].
Object[]vec;
//Nmerodeelementos
int num;
//Ampliarlacapacidaddelvector
protected void ampliar(){
vec=Arrays.copyOf(vec,2*vec.length);
}
//Restodeoperaciones...
}
11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

26

Elevacin de un nodo
void elevar(int i){
int k=i;//Posicindelelemento
E x=(E)vec[i];//Elemento
while(k>0){
int p=(k1)/2;//Posicindelpadre
//Sielelementoes>=padre,terminar
if(vec[k]>=vec[p])break;
//Encasocontrario,intercambiarloconelpadre
vec[k]=vec[p];
k=p;
}
//Colocarelementoenposicinfinal
vec[k]=x;
}

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

27

Descenso de un nodo
void descender(int i){
if(num<2)return;
int k=i;
//Posicindelelemento
E x=(E)vec[i];
//Elemento
int lim=(num2)/2; //Posicindelultimonodoconhijos
while(k<=lim){
int h=2*k+1;//Posicindelprimerhijo
//Escogerelhijomspequeo
if(h+1<num&&vec[h]>vec[h+1]){h++;}
//Sielelementoesmenorqueelmenorhijo,terminar
if(x<=vec[h])break;
//Encasocontrario,intercambiarconhijomenor
vec[k]=vec[h];
k=h;
}
vec[k]=x;//Colocarelementoenposicinfinal
}
11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

28

Acceso al mnimo e insercin


public E min(){return (E)vec[0];}
public void add(E elem){
//Ampliararraysilleno
if(num>=vec.length)ampliar();
//Ponerelelementoalfinal
num++;
vec[num1]=elem;
//Elevarelelemento
elevar(num1);
}

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

29

Ejemplo de insercin

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

30

Borrado del mnimo


public E delMin(){
Ex=(E)vec[0];
//Moverltimoaraiz(elementoaborrar)
vec[0]=vec[num1];
vec[num1]=x;
num;
//Descenderelnuevoelementoraiz
descender(0);
return x;
}

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

31

Ejemplo de borrado del mnimo

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

32

Creacin a partir de array

Es posible crear un montculo directamente de un array, sin


necesidad de realizar n inserciones: Se hace un recorrido por
niveles, del penltimo hacia arriba, descendiendo la raiz de esos
subrboles. El orden es O(n) y no se requiere espacio extra.
public void crear(Object[]vec){
//Setrabajasobreelvectorproporcionado
this.vec=vec;
this.num=vec.length;
//Recorrernodosporniveles(delltimoal
//primero)descendiendosuraiz
for(int i=(num2)/2;i>=0;i){
descender(i);
}
}

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

33

Ordenacin por montculos

La ordenacin por montculos se basa en la posibilidad de


crear un montculo directamente sobre el propio array, y del
efecto colateral del borrado del mnimo, que (al intercambiarle con
el ltimo) lo coloca en la ltima posicin.

Primero se reorganiza un vector desordenado como montculo: Esta


operacin tarda O(n).

A continuacin se realizan n extracciones del mnimo: O(n log n).

El resultado es un montculo vaco (num = 0), pero en el vector


que lo sostena se han depositado los elementos borrados en las
posiciones inversas: Se obtiene un vector ordenado de mayor a
menor.

Con un montculo de mximos se obtendra un vector ordenado de


menor a mayor.

El tiempo es O(n log n) y el espacio O(1).

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

34

Otros montculos

Los montculos que hemos visto son los montculos binarios.


Existen otros tipos de montculos, generalmente basados en
representacin enlazada (se sigue manteniendo la propiedad de
montculo)

Montculo binomial: La operacin de fusin de montculos


es O(log n), en vez de O(n) como en los binarios. Sin
embargo, el acceso al mnimo es O(log n) en vez de O(1).

Montculo de Fibonacci: Las operaciones de acceso al


mnimo, insercin y fusin son O(1) en tiempo amortizado.
La operacin de borrado del mnimo es O(log n), tambin
en tiempo amortizado.

Montculo Min-Max: Cada nodo en nivel par es menor que


sus descendientes, y cada nodo en nivel impar es mayor que
sus descendientes.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

35

5. RBOLES BINARIOS DE
BSQUEDA

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

36

rbol Binario de Bsqueda

Un rbol binario de bsqueda (rbol BB) es un rbol binario


cuyos nodos almacenan elementos comparables mediante y
donde todo nodo cumple la propiedad de ordenacin:

Propiedad de ordenacin: Todo nodo es mayor que los


nodos de su subrbol izquierdo, y menor que los nodos de su
subrbol derecho.
x

11 Feb. 2011

<

>

Elementos
menores que x

Elementos
mayores que x

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

37

Ejemplo de rbol BB

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

38

Propiedades y operaciones

Un recorrido inorden por el rbol recorre los elementos en orden


de menor a mayor.

El elemento mnimo es el primer nodo sin hijo izquierdo en un


descenso por hijos izquierdos desde la raiz.

El elemento mximo es el primer nodo sin hijo derecho en un


descenso por hijos derechos desde la raiz.

Para buscar un elemento se parte de la raiz y se desciende


escogiendo el subrbol izquierdo si el valor buscado es menor
que el del nodo o el subrbol derecho si es mayor.

Para insertar un elemento se busca en el rbol y se inserta como


nodo hoja en el punto donde debera encontrarse.

Para borrar un elemento, se adaptan los enlaces si tiene 0 o 1


hijo. Si tiene dos hijos se intercambia con el mximo de su
subrbol izquierdo y se borra ese mximo.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

39

Representacin (Java)
public class ArbolBB<E>{
//ClaseinternaquerepresentaunnodoBB
privateclass Nodo<E>{
E elem; //Elemento
Nodo<E>izdo,dcho;//Enlaces
//Constructor(nodosinenlaces)
Nodo(E elem){this.elem=elem;izdo=dcho=null;}
}
//Nodoraiz
Nodo<E>raiz=null;
//Restodeoperaciones...
}

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

40

Acceso por valor (bsqueda)


public E get(E elem){
if(raiz==null)return null;
Nodo<E>p=raiz;
do {
if(elem==p.elem)break;
p=(elem<p.elem)? p.izdo: p.dcho;
}while(p!=null);
return (p==null)?null :p.elem;
}

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

41

Insercin
public void add(E elem){
if(raiz==null){raiz=new Nodo(elem);return;}
Nodo<E>ant=null;
Nodo<E>act=raiz;
do {
ant=act;
act=(elem<act.elem)? act.izdo: act.dcho;
}while(act!=null);
//Insertarnuevonodo
act=newNodo(elem);
if(elem<ant.elem){
ant.izdo=act;
}else {
ant.dcho=act;
}
}
11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

42

Borrado (I)
public void del(E elem){
//Sielelementonoexiste,nohacernada
if(get(elem)==null)return;
//Bsquedadelnodoaborrar(existe)
if(raiz==null){raiz=new Nodo(elem);return;}
Nodo<E>ant=null;
Nodo<E>act=raiz;
while(elem!=act.elem) {
ant=act;
act=(elem<act.elem)? act.izdo: act.dcho;
}while(act!=null);
//actapuntaalelementoaborraryantasupadre
...

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

43

Borrado (II)
//Sitienedoshijos,lointercambiamoscon
//elmximodesusubarbolizquierdo
if(act.izdo!=null &&act.dcho!=null){
Nodo<E>tmp=act;
ant=act;act=act.izdo;
while(act.dcho!=null){ant=act;act=act.dcho;}
tmp.elem=act.elem;
}
//Elnodoaborrarsolotiene0o1hijos
Nodo<E>h=(act.izdo!=null)?act.izdo:act.dcho;
if(ant==null){
raiz=h;
}else {
if(ant.izdo=act){ant.izdo=h;}else {ant.dcho=h;}
}
}
11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

44

Ejemplo de borrado 0 hijos

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

45

Ejemplo de borrado 1 hijos

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

46

Ejemplo de borrado 2 hijos

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

47

Extensin: Acceso por ndice

Es posible extender un ABB para que la operacin de acceso


al i-simo menor sea eficiente aadiendo un campo a cada
nodo que indique el nmero de elementos del subrbol:
5

10

acceso(9)
5

4
0

6
1

11 Feb. 2011

2
3

acceso(9-4-1 = 4)

acceso(4-1-1 = 2)
1

10

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

2 - 1 a la izquierda:
El nodo 9 es el buscado

48

Utilidad

Un rbol BB podra ser adecuado para representar los TADs


Conjunto, Mapa, Diccionario y Lista ordenada:

El acceso por valor (bsqueda) es O(h)

La insercin por valor es O(h)

El borrado por valor es O(h).

El acceso al -simo menor (con la extensin anterior) es O(h).

El borrado del i-simo menor es O(h).

La fusin es O(n).

En las medidas de eficiencia h es la altura del rbol.

Se define arbol equilibrado como aqul que garantiza que su altura


es logartmica h O(log n)

Desafortunadamente, los rboles BB no son equilibrados (no tiene


porqu cumplirse que la altura sea logartmica).

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

49

Equilibrado en rboles BB

El que un rbol BB est equilibrado o no depende de la


secuencia de inserciones. Desafortunadamente, el insertar
elementos en orden provoca caer en el peor caso: Un rbol
lineal (altura O(n), proporcional al nmero de elementos)

En un rbol lineal todas las


operaciones relevantes seran O(n),
arruinando la eficiencia.

Si los elementos se insertan al azar,


se puede demostrar que la altura del
rbol BB es, en promedio, logartmica.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

50

6. RBOLES AVL

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

51

rboles equilibrados

Los rboles equilibrados son rboles BB que imponen


restricciones estructurales para garantizar (o tender a) que su
altura sea logartmica.

Para ello aaden etapas extra a las operaciones de insercin y


borrado (y a veces al acceso)

rboles AVL: Imponen que para todo nodo la diferencia de altura


entre los subrboles izquierdo y derecho no sea mayor que uno.

rboles Rojo-Negro: Los nodos se clasifican como rojos o


negros, y se cumple:

Los hijos de un nodo rojo son negros

Todo camino de la raiz a una hoja pasa por el mismo nmero de


nodos negros.

Splay Trees: Cada vez que se accede a un nodo se eleva en el


rbol pasando a ser la raiz (equilibrado promedio)

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

52

rboles AVL

Los rboles AVL son rboles BB donde todo nodo cumple la


propiedad de equilibrado AVL:
La altura del subrbol izquierdo y del derecho no se
diferencian en ms de uno.

Se define factor de equilibrio de un nodo como:


Fe(nodo) = altura(derecho) altura(izquierdo)

En un rbol AVL el factor de equilibrio de todo nodo es -1, 0 +1.

Tras la insercin o borrado de un elemento, slo los


ascendientes del nodo pueden sufrir un cambio en su factor de
equilibrio, y en todo caso slo en una unidad.

Se aade una etapa donde se recorren los ascendientes. Si


alguno est desequilibrado (+2 o -2) se vuelve a equilibrar
mediante operaciones denominadas rotaciones.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

53

Ejemplo de rbol AVL

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

54

ltura logartmica

Todo rbol binario con equilibrado AVL tiene altura logartmica

Se define rbol de Fibonacci (Fh) como:

F-1 es el rbol vaco.

F0 es el rbol con un nico nodo.

Fh es el rbol con subrbol izquierdo Fh-2 y derecho Fh-1

El rbol Fh tiene altura h y nmero de elementos:


F5

Un rbol de fibonacci es el rbol AVL


con mayor desequilibrio

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

55

Operaciones en rbol AVL

Un rbol AVL es un rbol binario de bsqueda (ABB), ampliado con


un campo que indica el factor de equilibrio de cada nodo.

Las operaciones de acceso son idnticas a las de un ABB.

Las operaciones de insercin y borrado se realizan igual que en un


ABB, salvo que se aade una etapa posterior de reequilibrado.

El reequilibrado recorre los ascendientes del nodo que ha sufrido


modificacin, recalculando sus factores de equilibrio y aplicando las
rotaciones adecuadas cuando es necesario.

El recorrido se detiene al llegar al nodo raiz o cuando el subrbol del


nodo actual no haya sufrido cambios en altura respecto a la situacin
anterior a la operacin.

Es necesario controlar el cambio de altura de los subrboles, dH, a lo


largo del recorrido.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

56

Cambios en altura

En insercin (dH > 0), si un hijo (y) incrementa su altura, el padre (x)
tambin la incrementa si su factor de equilibrio era -1 o 0 (hijo
izquierdo) o bien 0 o +1 (hijo derecho)

En borrado (dH < 0), si un hijo (y) decrementa su altura, el padre (x)
tambin la decrementa si su factor de equilibrio era -1 (hijo izquierdo)
o +1 (hijo derecho)

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

57

Rotaciones

Una rotacin es una reestructuracin local de un subrbol


BB que mantiene la propiedad de ordenacin.
x

y
x

C
z

z
y

y
x

11 Feb. 2011

x
z

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

58

Rotaciones en AVL

Tras una operacin de insercin o borrado, se recorren los


ascendientes, recalculando sus factores de equilibrio y
teniendo en cuenta el cambio en altura del subrbol.

Es posible que en el recorrido el factor de equilibrio de algn


nodo pasa a valer +2 -2 (desequilibrado).

En ese caso se aplica una determinada rotacin que


restablece el equilbrio del nodo (aunque es posible que
cambie la altura del nodo).

En un rbol AVL se necesitan 2 tipos de rotaciones (simples y


dobles), en un sentido u otro (izquierdas y derechas).

Teniendo en cuenta los distintos ajustes de factores de


equilibrio y posibles resultados respecto al cambio de altura,
existen seis casos a considerar.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

59

Rotacin 2|1 (Simple derecha)

Posibles causas: Borrado en A que decrementa su altura (sin cambiar la


del subrbol x) o insercin en C que incrementa su altura (incrementando
la de los subarboles y, x).

Tras la rotacin el subarbol decrementa en uno su altura.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

60

Rotacin 2|0 (Simple derecha)

Posibles causas: Borrado en A que decrementa su altura (sin cambiar la


del subrbol x)

Tras la rotacin el subarbol mantiene su altura.

Las modificaciones son las mismas que el caso anterior

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

61

Rotacin 2|-1 (Doble derecha)

Posibles causas: Borrado en A que decrementa su altura (sin cambiar la


del subrbol x) insercin en B C que incrementa su altura y la de los
subarboles z, y, x

Tras la rotacin el subarbol decrementa en uno su altura.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

62

Rotacin -2|-1 (Simple izquierda)

Posibles causas: Borrado en C que decrementa su altura (sin cambiar la


del subrbol x) o insercin en A que incrementa su altura (incrementando
la de los subarboles y, x).

Tras la rotacin el subarbol decrementa en uno su altura.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

63

Rotacin -2|0 (Simple izquierda)

Posibles causas: Borrado en C que decrementa su altura (sin cambiar la


del subrbol x)

Tras la rotacin el subarbol mantiene su altura.

Las modificaciones son las mismas que el caso anterior.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

64

Rotacin -2|1 (Doble izquierda)

Posibles causas: Borrado en D que decrementa su altura (sin cambiar la


del subrbol x) insercin en B C que incrementa su altura y la de los
subarboles z, y, x

Tras la rotacin el subarbol decrementa en uno su altura.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

65

Implementacin en Haskell (I)


Nodoeixd
i,d:Subarbolesizquierdoyderecho
x:elementoalmacenado
e:Factordeequilibrio=altura(d)altura(i)
data AVLa=Nulo |Nodo Int(AVLa)a(AVLa)
Elementomnimo
minimo::AVLa>a
minimo(Nodo_Nulox_)=x
minimo(Nodo_i__)=minimoi
Bsqueda
busqueda::AVLa>a>Bool
busquedaNulo_=False
busqueda(Nodo_iyd)x
|x==y=True
|x<y=busquedaix
|x>y=busquedadx
11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

66

Implementacin en Haskell (II)


Equilibraunsubarbolenelculelnodoraizestdesequilibrado
(+2o2)aplicandolarotacinadecuada.Devuelveunparconel
subarbolequilibradoylamodificacindelaalturarespectoalsubarbol
anterior(seacumulaalparmetropquetomaencuentamodificaciones
dealturadeoperacionesanteriores).
equil::AVLa>Int>(AVLa,Int)
equil(Nodo2ax(Nodo1byc))p=
(Nodo0(Nodo0axb)yc,p1)
equil(Nodo2ax(Nodo0byc))p=
(Nodo(1)(Nodo1axb)yc,p)
equil(Nodo2ax(Nodo(1)(Nodoebzc)yd))p=
(Nodo0(Nodo(min(e)0)axb)z(Nodo(max(e)0)cyd),p1)
equil(Nodo(2)(Nodo(1)ayb)xc)p=
(Nodo0ay(Nodo0bxc),p1)
equil(Nodo(2)(Nodo0ayb)xc)p=
(Nodo1ay(Nodo(1)bxc),p)
equil(Nodo(2)(Nodo1ay(Nodoebzc))xd)p=
(Nodo0(Nodo(min(e)0)ayb)z(Nodo(max(e)0)cxd),p1)
equilap=(a,p) Casoenquenoestdesequilibrado
11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

67

Implementacin en Haskell (III)


insercion
insertar::(Orda)=>AVLa>a>AVLa
insertarax=fst(insauxax)
Insertaenunsubarbolydevuelvelamodificacionenaltura
(+1,0)delsubarbolresultante
insaux::(Orda)=>AVLa>a>(AVLa,Int)
insauxNulox=(Nodo0NuloxNulo,1)
insauxa@(Nodoeiyd)x
| x<y=let (i',k)=
insauxixin equil(Nodo(ek)i'yd)(min(k*(1e))1)
| x>y=let (d',k)=
insauxdxin equil(Nodo(e+k)iyd')(min(k*(1+e))1)
| x==y=(a,0)
Nota:Envioleta aparecenfrmulasderivadasdelos
diagramasdelatransparencia57
11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

68

Implementacin en Haskell (IV)


borrado
borrar::(Orda)=>AVLa>a>AVLa
borrarax=fst(borauxax)where
borauxNulo_=(Nulo,0)
boraux(Nodoeiyd)x
| x<y=let (i',k)=
borauxixin equil(Nodo(ek)i'yd)(min(k*e)0)
| x>y=let (d',k)=
borauxdxin equil(Nodo(e+k)iyd')(min(k*e)0)
| x==y=case (i,d)of
(Nulo,Nulo)> (Nulo,1)
(Nulo,_)> (d,1)
(_,Nulo)> (i,1)
(_,_)> equil(Nodo(ek)i'zd)kwhere
z=maximoi
(i',k)=borauxiz
11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

69

7. ANLISIS DE EFICIENCIA

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

70

Contigua
ordenada

rbol bin. bsq.


(peor caso)

rbol bin. bsq.


(caso promedio)

rbol AVL

Eficiencia TADs Conjunto/Mapa

Pertenencia (conjunto)
Acceso por clave (mapa)

O(log n)

O(n)

O(log n)

O(log n)

Borrado (por valor/clave)

O(n)

O(n)

O(log n)

O(log n)

Insercin (por valor)

O(n)

O(n)

O(log n)

O(log n)

Iterar todos los elementos

O(n)

O(n)

O(n)

O(n)

Unin (ambos tamao n)

O(n)

11 Feb. 2011

O(n log n) O(n log n) O(n log n)

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

71

rbol AVL

Acceso i-simo menor

Contigua
ordenada

Eficiencia TAD Lista Ordenada

O(1)

O(log n)

Borrado i-simo menor

O(n)

O(log n)

Insercin por valor

O(n)

O(log n)

Bsqueda
Fusin

11 Feb. 2011

Nota:
Se supone que los nodos del
rbol AVL disponen de un
campo extra que almacena el
nmero de elementos del
subrbol.

O(log n) O(log n)
O(n)

O(n)

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

72

Contigua
ordenada

Contigua

Arbol AVL

Montculo

Eficiencia TAD Cola de Prioridad

Acceso mnimo

O(1)

O(1)

O(log n)

O(1)

Borrado mnimo

O(1)

O(n)

O(log n)

O(log n)

Borrado elemento
dada su referencia

O(n)

O(n)

O(log n)

O(log n)

Insercin por valor

O(n)

O(1)

O(log n)

O(log n)

Creacin a partir de un
array desordenado

O(n log n)

---

O(n log n)

O(n)

Fusin

O(n log n)

O(n)

O(n log n)

O(n)

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

73

Contigua
ordenada

Enlazada
ordenada

Arbol AVL

Eficiencia TAD Diccionario

O(log n)

O(n)

O(log n)

Acceso clave i-sima


menor

O(1)

O(n)

O(log n)

Acceso por iterador

O(1)

O(1)

O(1)

Borrado por clave

O(n)

O(n)

O(log n)

Borrado clave i-sima


menor

O(n)

O(n)

O(log n)

Borrado por iterador

O(n)

O(1)

O(log n)

Insercin por valor

O(n)

O(n)

O(log n)

Acceso por clave

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

74

8. RBOLES B

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

75

Motivacin

Los sistemas de almacenamiento masivo


suelen tener un tiempo de acceso mucho
mayor que el tiempo de transferencia: La
localizacin de un elemento es mucho ms
costosa que la lectura secuencial de datos,
una vez localizados.

Esto se aplica sobre todo a discos duros, pero tambin, aunque en


menor medida, a memorias de estado slido (flash) e incluso a
memorias voltiles.

Esto supone un problema para estructuras enlazadas, como los


rboles AVL, donde las operaciones acceden a bastantes nodos de
pequeo tamao.

Para grandes volmenes de datos, sera conveniente reducir el


nmero de accesos, a cambio de que esos accesos contuvieran
elementos de mayor tamao.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

76

Caso prctico

El SACYL trabaja con una base de datos de unas 2.500.000 tarjetas


sanitarias, ocupando cada una aprox. 1 Kb de datos.

Si se almacenan en un rbol AVL, su altura (rbol de Fibonacci) sera:

Lo que supone entre 25-31 accesos a disco para cualquier bsqueda


de un elemento.

En cambio, si se almacenan en un rbol B de orden 1.000


(aproximadamente 1 Mb por nodo) tendra altura 3, o 2 con una
ocupacin media del 80%.

Slo se necesitaran 1 2 accesos a disco (la raiz reside en memoria)


para cada bsqueda.

El orden para ambos casos es logartmico, pero si el tiempo de


acceso es dominante, la segunda solucin sera 10-30 veces ms
rapida.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

77

rboles (a,b)

Los rboles (a,b) son rboles generales (no binarios) donde cada nodo
interno puede tener un nmero de hijos, m+1, en el rango [a,b].
Cada nodo almacena m claves (elementos comparables por ),
ordenadas de menor a mayor, que sirven para que se pueda usar como
un rbol de bsqueda.
El contenido tpico de un nodo consiste en:

Un entero, m [a-1,b-1], que indica el nmero de claves almacenadas.

Un vector, c, de capacidad b-1, que almacena las m claves.

Un vector, e, de capacidad b, que almacena los m+1 enlaces a hijos.

Propiedad de ordenacin: Nodo e[i] almacena claves menores que c[i]


x

<x
11 Feb. 2011

> x, < y

> y, < z

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

>z
78

rboles B

Un rbol B (Bayer-McCreight 1972) de orden d es un rbol (d+1,2d+1)


con las propiedades adicionales siguientes:

La raiz puede tener cualquier nmero de claves.

Todas las hojas se encuentran a la misma profundidad, h.

La segunda propiedad garantiza que un rbol B es un rbol equilibrado:


Su altura es logartmica respecto al nmero de claves almacenadas.

Ejemplo: Un rbol B de orden 1 es un rbol (2,3): Cada nodo puede


contener 1 o 2 claves y tener 2 o 3 hijos.
5

h=2
1 2
11 Feb. 2011

7 10

3
4

8 9

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

11
79

Reestructuraciones
2d+1

d+1

11 Feb. 2011

Divisin

d-1

d-1

Transferencia

Fusin

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

2d

80

Bsqueda e Insercin

Bsqueda:

Se desciende desde la raiz hasta el nodo que contenga el


elemento (o bien llegar a una hoja que no lo contenga).

En cada nodo se busca en el array de claves (bsqueda


secuencial o binaria). Si no se encuentra, se pasa al hijo
asociado a la primera clave mayor que el valor buscado (o el
ltimo hijo si el valor buscado es mayor que todas las claves).

Insercin:

Se desciende (igual que en la bsqueda) hasta el nodo hoja


que debera contener el elemento.

Se inserta en la posicin adecuada del array de claves.

Si con ello se supera el nmero mximo de claves (2d), el


nodo se divide, transfiriendo su clave en posicin media al
padre.

Es posible que el padre deba dividirse a su vez, y as con


todos los ascendientes.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

81

Borrado

Borrado en nodo interno:

Se desciende desde la raiz hasta el nodo que contenga el


elemento a borrar.

Se intercambia con el mximo del hijo izquierdo o con el mnimo


del hijo derecho (se elige el hijo con ms claves).

Se pasa a borrar el elemento en el hijo (al final el borrado se


produce en un nodo hoja)

Borrado en nodo hoja:

Se elimina del array de claves (desplazamiento).

Si con ello el nmero de claves es d-1:

11 Feb. 2011

Se intenta una transferencia con el hermano izquierdo o derecho, el


que contenga ms claves.

Si no es posible (ambos tienen d hijos o no existen), se produce una


fusin con el hermano izquierdo (o el derecho, si no existe).

La fusin toma un elemento del padre, por lo que ste a su vez puede
necesitar transferencias o fusiones (y as con los ascendientes)
Csar Vaca Rodrguez, Dpto. de Informtica, UVa

82

Insercin Sin reestructuracin

Insercin del valor 2 en rbol B de orden 2 (rbol (3,5))

1 3

11 Feb. 2011

7 8 10 12

13

21

15 19 20

35

24 26 30

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

37 40

83

Insercin Sin reestructuracin

Se busca el nodo hoja donde debe encontrarse el elemento

13

21

35

1 3

11 Feb. 2011

7 8 10 12

15 19 20

24 26 30

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

37 40

84

Insercin Sin reestructuracin

Se inserta en orden en la hoja (desplazamiento)

1 2 3

11 Feb. 2011

7 8 10 12

13

21

15 19 20

35

24 26 30

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

37 40

85

Insercin Divisin de nodos

Insercin del valor 11

1 2 3

11 Feb. 2011

7 8 10 12

13

21

15 19 20

35

24 26 30

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

37 40

86

Insercin Divisin de nodos

Se busca el nodo hoja donde debe encontrarse el elemento

13

21

35

11
1 2 3

11 Feb. 2011

7 8 10 12

15 19 20

24 26 30

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

37 40

87

Insercin Divisin de nodos

Se inserta en el nodo. En este caso el nodo sobrepasa el lmite de


claves (4).

1 2 3

11 Feb. 2011

7 8 10 11 12

13

21

15 19 20

35

24 26 30

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

37 40

88

Insercin Divisin de nodos

Se crea un nuevo nodo y se traslada la mitad derecha de los


elementos a l. El elemento en posicin media (10), junto con el
enlace al nuevo nodo, se enva al padre para su insercin

13

21

35

10
1 2 3

11 Feb. 2011

7 8

11 12

15 19 20

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

24 26 30

37 40

89

Insercin Divisin de nodos

Se inserta en el nodo padre. Se sobrepasa el lmite de claves


permitidas (4)

1 2 3

11 Feb. 2011

7 8

11 12

10

13

21

35

15 19 20

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

24 26 30

37 40

90

Insercin Divisin de nodos

Se crea un nuevo nodo y se traslada la mitad derecha de los


elementos a l. El elemento en posicin media (13), junto con el
enlace al nuevo nodo, se enva al padre para su insercin
13
5

1 2 3

11 Feb. 2011

7 8

21

10

11 12

15 19 20

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

35

24 26 30

37 40

91

Insercin Divisin de nodos


13

1 2 3

7 8

21

10

11 12

15 19 20

35

24 26 30

37 40

Como no existe padre, se crea un nuevo nodo raiz que contiene


nicamente esa clave

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

92

Borrado Sin reestructuracin


13

1 2 3

7 8

21

10

11 12

15 19 20

35

24 26 30

37 40

Borrado de la clave 35. Se busca el nodo donde est el elemento.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

93

Borrado Sin reestructuracin


13

1 2 3

7 8

21

10

11 12

15 19 20

30

24 26 35

37 40

Es un nodo interno. Se intercambia con el mximo de su hijo


izquierdo y se pasa a borrar esa clave.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

94

Borrado Sin reestructuracin


13

1 2 3

21

10

7 8

11 12

15 19 20

30

24 26

37 40

Se borra el elemento.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

95

Borrado Transferencia
13

1 2 3

7 8

21

10

11 12

15 19 20

30

24 26

37 40

Borrado de la clave 8. Se busca el nodo.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

96

Borrado Transferencia
13

1 2 3

21

10

11 12

15 19 20

35

26 30

37 40

Se borra la clave. El nodo pasa a tener menos claves que las


permitidas (2).

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

97

Borrado Transferencia
13

21

10

35

1 2

11 12

15 19 20

26 30

37 40

Se comprueba el hermano con ms claves (el izquierdo). Se


transfiere su ltima clave al padre y la del padre al nodo.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

98

Borrado Transferencia
13

1 2

11 Feb. 2011

5 7

21

10

11 12

15 19 20

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

35

26 30

37 40

99

Borrado Fusin
13

1 2

5 7

21

10

11 12

15 19 20

35

26 30

37 40

Borrado del elemento con clave 11. Se busca el nodo.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

100

Borrado Fusin
13

1 2

5 7

21

10

12

15 19 20

35

26 30

37 40

Al borrar la clave pasa a tener menos claves que las permitidas. Su


nico hermano (izquierdo) no puede transferir claves.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

101

Borrado Fusin
13

1 2

5 7 10 12

21

15 19 20

35

26 30

37 40

Se fusionan el nodo con su hermano izquierdo, tomando una clave


extra del padre. El padre pasa a tener una sola clave, y su hermano
derecho no puede transferir.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

102

Borrado Fusin

1 2

5 7 10 12

13

21

15 19 20

35

26 30

37 40

Se fusionan los nodos, tomando la nica clave del raiz, que queda
vaco.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

103

Borrado Fusin

Se elimina el nodo raiz.

1 2

11 Feb. 2011

5 7 10 12

13

21

15 19 20

35

26 30

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

37 40

104

Usos y Variantes

Los rboles B y sus variantes se usan en:

Gestores de Bases de Datos.

Sistemas de Ficheros: NTFS (Windows), HFS+ (Apple), btrfs,


Ext4 (Linux)

Variantes principales:

rboles con prerecorrido: Antes de insertar se realiza una bsqueda


que divide todos los nodos llenos. El nmero mximo de claves es 2d+1.

rboles B+: Slo las hojas contienen elementos, los nodos internos
contienen claves para dirigir la bsqueda (esas claves se encuentran
tambin en los nodos hoja). Los nodos hoja forman una lista doblemente
enlazada.

rboles B*: El nmero mnimo de claves es 2/3 de la capacidad. Se


fusionan 3 nodos en 2, y se dividen 2 nodos en 3.

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

105

Anda mungkin juga menyukai