You are on page 1of 42

Programacin 3

Cursada 2015

Prof. Alejandra Schiavoni

Ingeniera en Computacin - UNLP


rboles Binarios
de Bsqueda
Agenda

 rbol Binario de Bsqueda

 rboles AVL
rbol Binario de Bsqueda: Definicin

Un rbol binario de bsqueda es una


coleccin de nodos conteniendo
claves, que debe cumplir con una
propiedad estructural y una de orden.
rbol Binario de Bsqueda
La propiedad estructural: es un rbol binario

La propiedad de orden, es la siguiente:


para cada nodo N del rbol se cumple que
todos los nodos ubicados en el subrbol
izquierdo contienen claves menores que la
clave del nodo N y los nodos ubicados en el
subrbol derecho contienen claves mayores
que la clave del nodo N
rbol Binario de Bsqueda

21 30

33 33
13 21

5 25 36 32 41
18

40 43
15
rbol Binario de Bsqueda
Por qu no son ABB?

21 5

33 6
13 1

17 18 22 4
25 2

15 40
rbol Binario de Bsqueda
Ejercicios:
Insertar: 22, 48 Borrar : 15,25,13,36

21

33
13

5 25 36
18

40
15
rboles AVL
 Definicin
 Caractersticas
 Insercin
 Desbalanceo
 Rotaciones Simples y Dobles
 Eliminacin

9
rbol AVL: Definicin
Un rbol AVL (AdelsonVelskiiLandis) es un rbol
binario de bsqueda que cumple con la condicin
de estar balanceado

La propiedad de balanceo que cumple dice:

Para cada nodo del rbol, la diferencia de altura


entre el subrbol izquierdo y el subrbol derecho es
a lo sumo 1
10
Caractersticas
 La propiedad de balanceo es fcil de
mantener y garantiza que la altura del
rbol sea de O(log n).

 En cada nodo del rbol se guarda


informacin de la altura.

 La altura del rbol vaco es -1.

11
Operaciones en un AVL

 Bsqueda/Recuperacin

 Insercin al insertar o eliminar un


dato del AVL se puede perder
la propiedad de balanceo
 Eliminacin

Se debe preservar el balanceo al realizar estas


operaciones sobre el rbol.
12
Insercin en el rbol AVL

 La insercin se realiza igual que en un rbol


binario de bsqueda

 Puede destruirse la propiedad de balanceo

Rebalancear el rbol

13
Problemas: Desbalanceo
 Al insertar un elemento se actualiza la
informacin de la altura de los nodos que
estn en el camino desde el nodo insertado a
la raz

 El desbalanceo slo se produce en ese


camino, ya que slo esos nodos tienen sus
subrboles modificados

14
Problemas: Desbalanceo
Ejemplo al insertar un nodo
Se desbalancea el 6
10 10
6 17 17
6

4 15 20 4 15 20

2
rbol despus de
insertar el 2

15
Rebalanceo del rbol
Para restaurar el balanceo del rbol:

 se recorre el camino de bsqueda en orden inverso


 se controla el equilibrio/balanceo de cada nodo
 si est desbalanceado se realiza una modificacin
simple: rotacin
 despus de rebalancear el nodo, la insercin
termina
 este proceso puede llegar a la raz

16
Rebalanceo del rbol
Hay 4 casos posibles de desbalanceo a tener en
cuenta, segn donde se hizo la Insercin. El nodo
A es el nodo desbalanceado.

A A
1. Insercin en el Subrbol 2. Insercin en el Subrbol DER
IZQ del hijo IZQ de A del hijo IZQ de A

A
3. Insercin en el Subrbol IZQ 4. Insercin en el Subrbol A
del hijo DER de A DER del hijo DER de A

17
Rebalanceo del rbol
 La solucin para restaurar el balanceo es la
ROTACION

La rotacin es una modificacin simple de


la estructura del rbol, que restaura la
propiedad de balanceo, preservando el
orden de los elementos

18
Rebalanceo del rbol

 Existen dos clases de rotaciones:


Rotacin Simple: Casos 1 y 4: insercin en el
lado externo
Rotacin Doble: Casos 2 y 3: insercin en el
lado interno

 Soluciones simtricas: En cada caso, los


subrboles estn opuestos.

19
Rotacin Simple
Caso 1: Rotacin Simple Izquierda

2
1
2
1

C
A B C
B
A

Se obtuvo nuevamente un rbol balanceado


20
Rotacin Simple (cont.)
Siguiendo con el ejemplo:

10 10
Rot. Simple
6 17 4 17

4 15 20 2 6 15 20

21
Rotacin Simple (cont.)
Caso 4: Rotacin Simple Derecha

Es simtrico al caso 1, el desbalanceo se


produce hacia el lado derecho

22
Rotacin Simple (cont.)
Ejemplo:

Insertar las claves del 1 al 7 en ese orden,


en un rbol AVL inicialmente vaco

23
Rotacin Simple (cont.)
1 Rot. Simple con Derecho 2 
2
1 3

3
2

1 3 Rot. Simple con Derecho 2 


4 1 4
4
5
3 5
5
3

24
Rotacin Simple (cont.)
Siguiendo con el ejemplo:
2 Rot. Simple 4

1 4 2 5

3 5 1 3 6

25
Rotacin Simple (cont.)
Siguiendo con el ejemplo:

4 Rot. Simple 4

2 5 2 6

1 3 6 1 3 5 7

26
Rotacin Doble
En algunos casos la rotacin simple no resuelve el
problema

Caso 2: Rotacin Doble Izquierda


Rotacin Simple
60 30
30 60

40 40

27
Rotacin Doble (cont.)
 Dado que el subrbol B tiene por
lo menos un tem, podemos
3 considerar que est formado por una
raz y dos subrboles

1 3

1
C
A 2
B
C
A
B1 B2
28
Rotacin Doble (cont.)
 La rotacin doble es similar a la simple, slo
que involucra cuatro subrboles en lugar de tres
 Ni los nodos 1 y 3 pueden quedar como raz, la 3
nica alternativa es que quede el nodo 2

Primero se hace una rotacin 2


simple entre 1 y 2
1
C
B2
B1
A

29
Rotacin Doble (cont.)
2 Luego se hace una rotacin
simple entre 2 y 3

1 3

B1 B2
A C

30
Rotacin Doble (cont.)
Caso 3: Rotacin Doble Derecha

Es simtrica al caso 2, la insercin se


produce en el subrbol izquierdo del hijo
derecho.

31
Rotacin Doble (cont.)
 Ejemplo:

Continuar con el ejemplo anterior, insertando


las claves del 8 al 15 en orden inverso.

Tarea para el hogar !!!

32
Eliminacin de un nodo
 La eliminacin de un nodo es similar al borrado en un
rbol binario de bsqueda.
 Luego de realizar el borrado se debe actualizar la altura
de todos los nodos, desde el nodo en cuestin hasta la raz.

 Puede destruirse la propiedad de balanceo

Rebalancear el rbol

33
Eliminacin de un nodo
 Se pueden definir 3 casos de desbalanceo a izquierda en
un nodo y los simtricos a derecha.
 Los casos de desbalanceo en el subrbol izquierdo del
nodo 2 dependen de las alturas h1 y h2 en el subrbol
derecho
2

C
h1 h2
A B
34
Eliminacin de un nodo
 Caso 1: h1= h2 Solucin: RSI en el nodo 2

2 1

1 2
h h

C A
h1 h2
B C
A B

El rbol resultante est balanceado


La altura del rbol no cambia
35
Eliminacin de un nodo
 Caso 2: h1> h2 Solucin: RSI en el nodo 2

2 1

1 2
h h-1

C A
h2
h1
B B C
A

En este caso, la altura del rbol disminuye en 1

36
Eliminacin de un nodo
 Caso 3: h1< h2 Solucin: RDI en el nodo 3
3 2

1 1 3

2 h h-1
C
h1
A h2
A B1 B2 C
B1 B2

La altura final del rbol disminuye en 1

37
Eliminacin de un nodo

Se elimina el nodo 13, se


desbalancea el 14

38
Eliminacin de un nodo
Rotacin simple entre el 14 y
15. Queda desbalanceado el 12

Rotacin simple entre el 5 y 12.

39
Tiempo de ejecucin de las
operaciones en AVL
Las operaciones de:
Bsqueda
Recorren la altura del
Insercin rbol en el peor caso
Eliminacin

40
Operaciones sobre los rboles AVL:
Conclusiones
 Las operaciones de insercin y eliminacin de un nodo
son similares a las de un rbol binario de bsqueda.
 En ambas operaciones se debe actualizar la informacin
de la altura y realizar rotaciones si es necesario.
 La insercin provoca una nica reestructuracin.
 La eliminacin puede provocar varias reestructuraciones.
 Las operaciones son de O(log n)

41
rboles Binarios de Bsqueda:
Conclusiones
 La idea de los rboles binarios de bsqueda es muy
til.

 Pero para que funcionen en todos los casos es


necesario introducir condiciones de balanceo.

 ABB sin balanceo: mal eficiencia en peor caso.

 AVL: Todos los casos estn en O(log n) y el balanceo


es poco costoso.
42

You might also like