Está en la página 1de 21

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Estructura de Datos
rboles 1-2-3
Prof.: Mauricio Solar

rboles 2-3
Prof.: Lorna Figueroa

Primer Semestre,
2010
1

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Arboles 1-2-3

rbol n-ario ordenado de orden 3


Cada nodo tiene 1 2 elementos
Nodo con dos elementos

50 75

20 30

60

80 90
77

52 58

85 86

Nodo con un elemento

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Arboles 1-2-3

Cada nodo tiene 1, 2 3 subrboles asociados


3 subrboles

50 75

20 30
1 subrbol

60
52 58

80 90
77

2 subrboles

85 86

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Arboles 1-2-3 Ordenado

No hay elementos repetidos


El elemento de la izquierda de cada nodo (raz izquierda) es
menor que el elemento de su derecha (raz derecha)

Raz izquierda

50 75

Raz derecha

20 30

60

80 90
77

52 58

85 86

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Arboles 1-2-3 Ordenado

El primer subrbol es un rbol 1-2-3 que contiene elementos


menores que la raz izquierda.
50 75

Primer
subrbol

20 30

60

80 90
77

52 58

85 86

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rbol 1-2-3: rbol triario ordenado


El segundo subrbol es un rbol 1-2-3 que contiene
elementos mayores que la raz izquierda pero menores que
la raz derecha.
50 75

20 30

Segundo
subrbol

80 90

60
52 58

77

85 86

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rbol 1-2-3: rbol triario ordenado


El tercer subrbol es un rbol 1-2-3 que contiene los
elementos mayores que la raz derecha.

50 75

20 30

80 90

60
52 58

77

Tercer
subrbol

85 86

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rbol 1-2-3: rbol triario ordenado


Si la raz derecha est vaca, su tercer subrbol debe ser
vaco (el segundo puede o no ser vaco).

50 75

20 30

80 90

60
52 58

77

85 86

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rbol 2-3
Motivacin:
Optimizar el tiempo de acceso en una estructura de datos
manejadas en memoria secundaria,
en las cuales el nmero de consultas a un registro influye
de manera determinante en el tiempo de respuesta de la
operacin.
Acceso a la informacin en O(log3N)
Baja complejidad en los algoritmos de actualizacin.

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles 2-3

Es un rbol triario ordenado balanceado:


Todas las hojas se encuentran en el mismo nivel,
ordenadas de izquierda a derecha.
Todos los nodos internos tienen por lo menos 2
subrboles asociados no vacos, aunque la raz derecha
est vaca.
50 75
20 30

80 90

60

7 10 25 26 42 48 52 58

70 74

77

85 86

92 98

10

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rbol 2-3

Son un tipo de rbol balanceado por altura.


Todos los nodos pueden tener hasta 2 elementos.
Un nodo interno puede tener 2 3 hijos, dependiendo de
cuntos elementos posea el nodo:
Si hay 1 elemento en el nodo, debe tener 2 hijos
Si hay 2 elementos en el nodo, debe tener 3 hijos

11

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles 2-3
50

20

10

90

90

70

30

40

60

73

100

110

120

150

130

140

160

12

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Arboles 2-3

13

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Bsqueda en un rbol 2-3


Se empieza por la raz y se va bajando por el rbol hasta que
se encuentre el dato o se llegue a una hoja.
Si el rbol est vaco, el dato no est en el rbol.
Si no est vaco, primero buscar en la raz.
Si es alguno de los elementos de la raz, se encontr.
En caso contrario:
Si el nodo es una hoja y el elemento no est en el
nodo, el algoritmo finaliza.

sigue
14

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Bsqueda en un rbol 2-3


Si el nodo no es una hoja :
Si slo hay un elemento en el nodo:
Si es mayor que el dato a buscar, se sigue por el hijo
derecho,
Si es menor, se sigue por el hijo izquierdo.
Si en el nodo hay dos elementos, r1 y r2 (con r1 r2):
Si el dato es menor que r1, buscar por el hijo izquierdo.
Si el dato es mayor que r1 y menor que r2, buscar por el
hijo central.
Si es mayor que r2 buscar por el hijo derecho.

15

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Insercin en Arboles 2-3

Al insertar un nuevo dato en un rbol 2-3 se har de forma que


se mantenga el equilibrio en el rbol.
1. Localizar el nodo hoja donde debe ir el elemento.
2. Si hay slo un elemento en ese nodo, aadir el dato.
3. Si no hay espacio en el nodo para un nuevo elemento, se divide
el nodo y el elemento central se inserta en el nodo padre.

16

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Insercin en Arboles 2-3


4. Si el nodo padre est lleno, al insertar el nuevo elemento se debe
repetir el paso 3.

17

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Insercin en Arboles 2-3

La secuencia de inserciones y divisiones se puede propagar


hacia arriba hasta llegar a la raz.
Cuando la raz pase a tener 3 elemento (r1, r2 y r3) se divide en 2
nuevos nodos r1 y r3 creando una nueva raz que contendr slo
el elemento r2.
De esta forma, cuando el rbol 2-3 crece en altura, lo hace por
arriba, creando una nueva raz con slo un elemento.

18

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Insercin en Arboles 2-3

Las inserciones en un rbol 2-3 tienen dos casos:


1. Hay espacio en el nodo pues hay un slo elemento.
2. No hay espacio y el nodo debe dividirse en dos y la
mediana de los tres elementos se inserta en el padre
recursivamente.
Esto puede generar una secuencia de divisiones hasta
la raz.

19

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Insercin en Arboles 2-3


En todos los casos, el elemento a insertar se denota por x
Caso 1:

r1

r1 < x

Caso 2:

r1

r1 > x

r1

r1

20

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Insercin en Arboles 2-3

Caso 3:

r1

r2

r2 < x

r1

r1

r2

Sube r2
x

r2 sube al nodo padre.

21

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Insercin en Arboles 2-3

Caso 4:

r1

r2

r1 > x

Sube r1
r2

r1

r2

r1 sube al nodo padre.

22

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Insercin en Arboles 2-3


Sube x
Caso 5:

r1

r2

r1 < x < r2

r1

r1

r2

r2

x sube al nodo padre.

23

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Pseudocdigo de insercin en un rbol 2-3


Si el rbol esta vaco,
crear un nuevo nodo y colocar r1 en el lado izquierdo del nodo.
Sino, Si hay un elemento y existe espacio en el nodo,
si r1 es menor que el elemento, el elemento se coloca a la derecha.
Sino, Si r1 es mayor que el elemento
el elemento se coloca al lado izquierdo y r1 al lado derecho.
Sino, Si el nodo est lleno
se divide en dos nodos del mismo nivel,
se crea un nuevo nodo y
se reparten los tres elementos.
Despus
si elemento es mayor que r2, sube r2 a su padre.
si elemento es menor que r1, sube r1 a su padre.
si elemento es mayor que r1, pero menor que r2 sube el elemento a su
padre.
24

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


Insertar en un rbol2-3 los siguientes elementos:
S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }

Input: 30

30

Input: 2

30

25

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


Insertar en un rbol2-3 los siguientes elementos:
S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }

Input: 15

30

15

15

30

30

Observe que el rbol crece


hacia arriba, por la raz.

26

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }

Input: 63

15

30

63

27

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }

Input: 65
15

15

63

Sube el 63
2

30 63

65

30

65

28

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }
Input: 1
15

63

30

65

29

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1, 0, 14, 27, 8, 9, 81, 79, 60 }
Input: 0
15

Sube el 1
0

63

30

65

15

30

63

65

30

63

65

15

Sube el 15
1

15

63

30

65
30

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }

15

Input: 14
1

63

14

30

65

31

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }
Input: 27
15
1

63

14

27 30

65

32

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }
Input: 8
15
1

63
Sube el 8

14

27 30

65

15
1

63

14

27 30

65
33

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }
Input: 9
15
1

63

14

27 30

65

34

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }
Input: 81
15
1

63

14

27 30

65 81

35

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }
Input: 79

15
1

63

14

Sube el 79

27 30

65

79

81

15

63

14

27 30

79

65

81
36

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }
15

Input: 60
1

63

14

15
1

30

81

Sube el 63

79

Sube el 30
27 30 60
65

14

63

79

60

27

65 81

sigue 37

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de Insercin en un rbol 2-3


S={ 30, 2, 15, 63, 65, 1,0, 14, 27, 8, 9, 81, 79, 60 }
Input: 60
15

63

79

30

14

27

60

65

81

38

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3

La estrategia de eliminacin de datos en un rbol 2-3 es


complementaria a la de insercin.
En la insercin se produce una cadena de divisiones e
inserciones hasta que un nodo no necesite dividirse o se llegue
a la raz.
En el caso de la eliminacin, los nodos se quedan vacos y se
fusionan con sus hermanos, hasta que un nodo quede vaco o
se llegue a la raz.

39

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3


1. El proceso siempre va a empezar en un nodo hoja.
Si el elemento a borrar est en un nodo interior, se
intercambia su valor con el de su sucesor en inorden,
menor elemento del subrbol que queda a la derecha
del elemento a borrar.
2. Si en la hoja en que se inicia la eliminacin hay otro elemento,
se elimina.

40

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3


3. Si en la hoja es el nico elemento, el nodo queda vaco, lo
cual no est permitido en rboles 2-3.
Para arreglarlo, se fusiona el nodo vaco con uno de sus
hermanos.
Como el nodo padre ha perdido un hijo, tambin tiene que
tener un elemento menos, por lo que pasa un elemento del
padre al nuevo nodo.
4. Si el nodo hermano ya estaba lleno, se divide el nuevo nodo
en 2 hijos y el elemento del medio queda como padre.

41

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3


5. Si el nodo padre se queda vaco al perder un elemento, se debe
de repetir el algoritmo de fusin en el rbol tantos niveles
hacia arriba como haga falta hasta encontrar un nodo que no
se quede vaco o se llegue a la raz.
Si se llega a la raz y se queda vaca, entonces tiene un
hijo.
La raz se elimina y su nico hijo pasa a ser la nueva raz.

42

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Eliminar del siguiente rbol 2-3 los elementos : 70, 100 y 80.

50

70

39

38

90

60

40

80

100

43

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Como el elemento 70 no est en una hoja, se intercambia con
su sucesor en inorden, el 80.
El nodo quedara entonces [80, 90] con tres hijos, [60], [70] y
[100].
50

80

39

38

60

40

90

70

100

sigue
44

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Al borrar el 70, el nodo queda vaco.

50

80

39

38

40

60

90

100

sigue
45

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Se intenta escoger para fusionarse un hermano que tenga dos
elementos,
para que el nodo padre no pierda elementos y evitar que
se propaguen la fusiones hacia arriba.
50

80

39

38

90

60

40

100

sigue
46

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Como en este caso no hay ningn hermano que pueda ceder
un elemento, se escoge un nodo cualquiera, por ejemplo el
[60] y se baja un elemento del nodo padre el [80].
El rbol queda finalmente:
50

90

39

38

60

40

80

100

47

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Borrar el elemento 100, que est en un nodo hoja.

50

90

39

38

40

60

80

100

sigue
48

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Este nodo se queda vaco, por lo que hay que realizar el
proceso de fusin.
50

90

39

38

60

40

80

sigue
49

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Como el nodo hermano est lleno, al bajar un elemento del
padre, hay que dividirlo y repartir los elementos.
Los nuevos nodos son el [60] y el [90] y el [80] es el elemento
que pasa al nodo padre.
50

80

39

38

60

40

90

sigue
50

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Borrar el elemento 80 que est en un nodo intermedio.
El primer paso es intercambiarlo por su sucesor en inorden, el
90.
50

80

39

38

40

60

90

sigue
51

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Resultado :

50

90

39

38

60

40

sigue
52

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Al eliminar el 80 de la hoja donde se ha colocado, sta se
queda vaca, por lo que hay que fusionarla con su hermano.
50

90

39

38

60

40

sigue
53

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Su hermano, que no est lleno, acepta el elemento que baja
del nodo padre, que se queda vaco :
50

39

38

40

60

90

sigue
54

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


El nodo intermedio que se qued vaco debe fusionarse con el
hermano ([39]), que como no est lleno, acepta el elemento
que baja de su padre, que se queda vaco.
50

39

38

60

40

90

sigue
55

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Como en el paso anterior, el hermano pasa a tener dos
elementos y el padre, en este caso la raz, se queda vaco:

39

38

50

60

40

90

sigue
56

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Eliminacin en un rbol 2-3; Ejemplo


Finalmente, se borra el nodo raz vaco y su nico hijo pasa a
ser la nueva raz.
El rbol ha perdido altura:

30

38

40

50

60

90

57

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Implementacin en un rbol 2-3

typedef struct NodoArbol23 {


TipoElemento raiz1, raiz2;
struct NodoArbol23 *h_izq, *h_cen, *h_der;
} TArbol23, *Arbol23;

raz_izq

raz_der

58

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Anlisis de la Complejidad

La altura h de un rbol 2-3 en el peor caso es cuando es un


rbol binario completo:
n = 1 + 2 + 4 + ... + 2(h-1) = (2h - 1)/(2 - 1) = 2h - 1 nodos,
es decir h <= log2 (n+1)
En el mejor caso es un rbol ternario, entonces:
n = 1 + 3 + 9 + ... + 3(h-1) = (3h - 1)/(3 - 1) = (3h - 1)/2 nodos,
es decir h >= log3(2n+1)
Luego la altura est entre log2 (n) y log3 (n)
59

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejercicios

1. Muestre el proceso de insercin en un rbol 2-3 de la siguiente


secuencia de valores:
25 86 34 23 4 98 12 56 74 77 80
2. Insertar las claves 39, 38, 37, 36, en el siguiente rbol 2-3:

60

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Bibliografa - Webgrafa

Algoritmos en C++ Robert Sedgewick, Fernando Davara


Rodrguez, Miguel Katrib Mora, Sergio Ros Aguilar, Luis
Joyanes Aguilar 2000 Addison-Wesley/Daz de Santos.
Introduction to Algorithms, 2nd edition. Cormen, T.,
Leiserson, Ch., Rivest, R. and Stein, C. MIT Press. 2001.
Data Structures and Algorithms. A. Aho, J. Hopcroft, and J.
Ullman. Addison-Wesley, 1983. Traducido al castellano, 1988.
Brassard, Gilles & Bratley, Paul. Fundamentos de Algoritmia.
Prentice-Hall. 1997.
http://www.utm.mx/~jahdezp/archivosestructuras/arbol2-3.pdf
http://www.tecn.upf.es/~rbaeza/cursos/tema4-arboles-AVLy23.html
cupi2.uniandes.edu.co
61

También podría gustarte