Está en la página 1de 44

Árboles

Estructuras de Datos

Vicente García Díaz – garciavicente@uniovi.es


Universidad de Oviedo, 2011
2

Tabla de contenidos
1. Conceptos básicos
2. Árboles binarios
1. Árboles perfectamente equilibrados
2. Árboles de búsqueda
1. Árboles simplemente equilibrados
2. Árboles óptimos
3. Árboles desplegados
3. Árboles de expresión
3. Árboles multicamino
1. Árboles B
4. Bibliografía
3

Conceptos básicos
4

Conceptos básicos

Árboles A
Nodos hermanos con un mismo padre Nodo Altura Profundidad Tamaño
A 3 0 8
B C D B 1 1 2
C 2 1 4
D 0 1 1
E 0 2 1
E F G
F 0 2 1
Antecesor y G 1 2 2
descendiente H 0 3 1
H
¿Grado del nodo C?
-Un nodo raíz
-Todos los nodos son conectados desde un único nodo (nodo padre) …¿y del árbol?
-Sólo hay un camino desde el nodo raíz a cada nodo
-Los nodos que no tienen hijos son nodos hoja
5

Conceptos básicos

Árbol completo de altura a y grado g


• El que tiene el máximo número de nodos
posible 20 = 1

a 1 i 21 = 2
nmax i 0
g
Ejercicio 1: ¿Cuál es el número máximo de nodos de un árbol de altura 5 y
grado 4?
6

Conceptos básicos

Camino de búsqueda interno


• Número de nodos que hay que recorrer para
encontrar un determinado nodo A
n representa el número
de nodos del árbol
B C D
1 a
LmediaC.I . i 1 i
n *i
n
H
E F G

Ejercicio 2: ¿Cuál es la longitud media del camino interno del árbol I


mostrado?
7

Árboles binarios
•Competiciones deportivas
•Árboles genealógicos
•Operaciones binarias
•…
8

Árboles binarios

Recorrido de un árbol (Preorden)


N A

B C
Izq Der

D E F

G H

Solución: A, B, D, C, E, F, G, H
9

Árboles binarios

Recorrido de un árbol (Inorden)


N A

B C
Izq Der

D E F

G H

Solución: D, B, A, E, C, G, F, H
10

Árboles binarios

Recorrido de un árbol (Postorden)


N A

B C
Izq Der

D E F

G H

Solución: D, B, E, G, H, F, C, A
11

Árboles binarios

Recorrido de un árbol
Ejercicio 3: Especifica el orden en el que se recorrerían los nodos del
siguiente árbol en caso de recorrerse en preorden, inorden y postorden

B C

F
D E

G H I
12

Árboles binarios

Recorrido de un árbol
Ejercicio 4: Escribe el pseudocódigo de un método recursivo que recorra
en preorden un árbol y refleje en pantalla el nivel en el que está situado el
nodo
13

Árboles binarios

Altura de un árbol
A
• Máxima
B
O(n)
C

• Mínima A

B C
O(log2n)

D E F G
14

Árboles binarios perfectamente equilibrados

Árboles perfectamente equilibrados (APE)


• Objetivo:
Conseguir trabajar con árboles de altura mínima

• Hay que distribuir el máximo número posible de


nodos en cada nivel

n | ni nd | 1
n

ni nd
15

Árboles binarios perfectamente equilibrados

Algoritmo
1- Usar un nodo para la raíz
2- Generar el subárbol izquierdo con ni = n div 2 nodos
3- Generar el subárbol derecho con nd = n – ni – 1 nodos

4- Repetir los pasos 1, 2 y 3 hasta que no haya más nodos

Ejercicio 5: Dibuja un árbol perfectamente equilibrado con los siguientes


nodos:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, Ñ, O, P, Q, R, S, T
16

Árboles binarios perfectamente equilibrados

Altura mínima vs APE

APE
Altura mínima
Binarios
Ejercicio 6: Especifica si los siguientes árboles tienen altura mínima y si
son APE

A A
1) 2)

B D B C

C D E
17
18

Árboles binarios de búsqueda

Árboles binarios de búsqueda (ABB)


• Objetivo:
Permitir utilizar un árbol como una estructura para buscar elementos
con complejidad logarítmica
• Si el árbol está organizado de 5
modo que para todo nodo ni,
todas las claves de los nodos
del subárbol izquierdo de ni 3 7
son menores que la clave de
ni, y todas las claves del
1 4 6 9
subárbol derecho de ni son
mayores que la clave de ni,
entonces el árbol es de 10
búsqueda
19

Árboles binarios de búsqueda

Inserción
Ejercicio 7: Construye un árbol binario de búsqueda para una serie de
nodos cuya clave es:

10, 100, 60, 30, 2, -43, 70, 90, 23, 43, 65, 13, 230, 49, 7, 40, 50, 20, 15, 3

Ten en cuenta que los nodos han aparecido de uno en uno en orden, siendo
el primero de ellos el nodo con clave 10 y el último, el nodo con clave 3

Es decir, habrá que empezar con un árbol con un solo elemento (10) y
después el árbol crece a dos elementos (10, 100) y así sucesivamente hasta
el final
20
10
Árboles binarios de búsqueda
2 100

Inserción 60 230
-43 7

3 30 70

23
Ejercicio 8: ¿Cuál es la 43 65 90
diferencia entre recorrer el
árbol de búsqueda:
13
-En Inorden (primero izquierda) 40 49
y
-En Inorden (primero derecha)
20 50

15
21

Árboles binarios de búsqueda

Borrado
• No es tan fácil como la inserción
• Posibilidades
▫ Nodo terminal  muy fácil 5

▫ Nodo con un solo hijo  fácil


▫ Nodo con dos hijos  más difícil 3 7

1 4 6 9

10
22

Árboles binarios de búsqueda


5
Borrado
3 8
• Borrado de nodo con dos hijos
▫ Reemplazar el elemento a borrar
1 4 6 9
por:
 El elemento más a la derecha del
subárbol izquierdo 7
 El elemento más a la izquierda del
subárbol derecho 6 4

3 3 8
8
1 4 1 6 9
9

7 7
23

Árboles binarios de búsqueda

Borrado
Ejercicio 9: Dibuja cómo irá evolucionando el siguiente árbol binario de
búsqueda si se borran (en orden) los siguientes nodos: 46, 40, 15, 30, 70,
60, 90, 50

50

30 70

15 40 60 90

1 25 33 46 56 62 87 99
24

Árboles binarios de búsqueda

Altura mínima de los árboles


• Lo ideal es que los árboles tengan altura mínima
para conseguir un orden logarítmico
• Sin embargo:
▫ Las operaciones de insertar y borrar que acabamos
de ver provocan que los árboles no tengan altura
mínima
 Sólo funciona la búsqueda
▫ Conseguir mantener un árbol perfectamente
equilibrado es muy costoso
25

Árboles binarios de búsqueda

Alternativas a la altura mínima


• ALTERNATIVA 1:
▫ No cuidar la altura del árbol
 La altura puede ser de n en el caso peor => O(n)
 Estudios empíricos muestran que:
altura_media = 1,386 * altura_minima
 Así, el comportamiento medio para buscar, borrar e
insertar sería O(log2n)
• ALTERNATIVA 2:
▫ Cuidar la altura del árbol
 Cuando se necesita garantizar una complejidad
logarítmica
 Árboles simplemente equilibrados
26

Árboles binarios de búsqueda AVL

Árboles simplemente equilibrados (AVL)


(Adelson – Velskii – Landis)
• Objetivo:
Conseguir realizar búsquedas, inserciones y borrados con una
complejidad logarítmica

n | hi hd | 1
APE
n
AVL Altura mínima

Binarios
hi hd
ni nd
27

Árboles binarios de búsqueda AVL

Áltura mínima vs APE vs AVL


Ejercicio 10: Especifica si los siguientes árboles: 1) tienen altura mínima,
2) son APE, 3) son AVL

1) 2) 3) 4)
28

Árboles binarios de búsqueda AVL

Algoritmo (de Fibonacci)


1- Decidir la altura a del árbol
- Para a = 0 => árbol vacío (T0)
- Para a = 1 => árbol con un elemento (T1)
- Para a > 1 => colocar un elemento raíz
asignarle un árbol Ta-1 a la izquierda
asignarle un árbol Ta-2 a la derecha

Ejercicio 11: Dibuja un árbol AVL de Fibonacci de altura a = 6


29

Árboles binarios de búsqueda AVL

Inserción
• Cuando se inserta un nuevo nodo hay que
mantener el equilibrio
▫ Posibles desequilibrios
B A
Rotación simple (izq)
A
3 B
1

1 2
1 2 3
2
30

Árboles binarios de búsqueda AVL

Inserción
• Posibles desequilibrios

C B
Rotación doble (izq)
A A C

B 4

2 3
1 1 4
2 3
1
2
31

Árboles binarios de búsqueda AVL

Inserción
Ejercicio 12: Dibuja cómo irá evolucionando un árbol AVL si se insertan
(en orden) los siguientes nodos (corrigiendo los posibles desequilibrios): 6,
7, 15, 4, 1, 6.5, 9, 100, 150
32

Árboles binarios de búsqueda AVL

Borrado Ejercicio 13:


Dibuja cómo irá
evolucionando el
• Igual que para los árboles binarios de búsqueda “normales” siguiente árbol AVL
▫ Nodo terminal, con un solo hijo, con dos hijos si se borran (en
• …pero con árboles AVL surgirá la necesidad de reequilibrar orden) los siguientes
▫ Rotaciones simples y dobles (una rotación puede desencadenar nodos (corrigiendo
en otras) los posibles
desequilibrios): 74,
50
72, 25, 40, 75, 99,
85, 50, 30
25 75

12 30 72 85

5 18 40 74 99
33

Árboles binarios de búsqueda óptimos

Árboles óptimos
• Objetivo:
Conseguir realizar búsquedas realizando menos pasos para acceder a
los nodos que se visitan con más frecuencia

• La estructura del árbol no suele modificarse


▫ Árboles de consulta
▫ Analizadores léxicos
34

Árboles binarios de búsqueda óptimos

Alternativas a la altura mínima


• La idea es reducir al máximo la LM ponderada de
todo el árbol
1 a a
LmediaC.I . n *i
i 1 i
Lmedia _ ponderadaC.I . i 1
pi * i
n

Nodo Probabilidad
A 0,30 * 1
A 0,30
B 0,20 (0,20 + 0,50)*2
B C
C 0,50

LMPCI = 1,70
Ejercicio 14: En función de la tabla de la derecha que Nodo Probabilidad

muestra las probabilidades de acceso a 3 nodos A, B y A 0,18

C, dibuja los dos mejores árboles y los dos peores (el B 0,35

mejor de todos es el óptimo) C 0,47


35

Árboles desplegados

Árboles desplegados (Splay)


• Objetivo:
Conseguir realizar búsquedas con complejidad O(1) gracias a que si
se accede a un nodo es probable que se tenga acceso de nuevo a él
en un plazo de tiempo breve

• Hay que subir el nodo visitado


hasta la raíz del árbol

Ejercicio 15: Existen 2 técnicas básicas para subir


el último nodo visitado hasta la raíz de un árbol de
búsqueda (Zig-Zag y Zig-Zig). Explica brevemente en
qué se basan
36
37

Árboles binarios (de expresión)

Ejemplo +

5 *

Ejercicio 16: ¿En qué orden


(preorden, inorden o
postorden) habrá que recorrer
4 -
el árbol para mostrar los
operandos y los operadores del
modo que estamos
acostumbrados cuando
realizamos operaciones 1 6
matemáticas? Recorre el árbol
y muestra el resultado
38

Árboles multicamino
•Modelos más complejos con los
binarios
•Reducen la altura del árbol
•Indicados para memoria secundaria
39
40

Árboles multicamino B

Árboles multicamino B-2n


• Objetivo:
Crear árboles de búsqueda permitiendo reducir la altura de los
árboles, puesto que un nodo puede tener más de 2 hijos

• El árbol está organizado en páginas


• Cada página tiene como máximo 2n elementos (n es el orden del árbol)
• Cada página (excepto la raíz) contiene al menos n elementos
• Cada página es:
▫ Una página hoja (no tiene descendientes)
▫ …o tiene m + 1 descendientes, siendo m el número de
elementos
• Todas las páginas hoja se encuentran al mismo nivel
41

Árboles multicamino B

Ejemplo árbol multicamino B-4


• Lo ideal es que los árboles tengan altura mínima

40 9 páginas

20 30 60, 70

10 12 14 16 21 22 23 24 35 38 46 50 51 61 66 68 71 78 88

¿qué sucede si se comprime el árbol en un único nivel a base de insertar


las claves de los descendientes entre las claves de su página antecesora?
42

Árboles multicamino B
Ejercicio 17: Construye un árbol B-4 para los siguientes
Inserción nodos: 60 10 20 30 40 50 70 80 90 15 25 35 45 55 65 12
14 16 18 21 87 89 96
• Queremos introducir un nodo con clave 27
43

Árboles multicamino B

Borrado
Ejercicio 18: Dibuja cómo irá evolucionando el árbol B-4 si se borran (en
orden) los siguientes nodos (corrigiendo los posibles desequilibrios): 40,
10, 12, 14, 66, 71, 70, 60, 35, 21, 22, 24, 29, 20, 23, 30, 78, 61, 16, 27, 38,
50

A 40

B 20 23 30 C 60, 70

10 12 14 16 21 22 24 27 29 35 38 46 50 51 61 66 68 71 78 88
D E J F G H I
44

Bibliografía
• WEISS, Mark Allen; (2000) Data Estructures & Problem Solving Using Java.
Addison Wesley. ISBN 03-2154-140-5.

• JAIME SISA, Alberto; (2002) Estructuras de Datos y Algoritmos con énfasis en


programación orientada a objetos. Pearson Educación. ISBN 958-699-044-3.

• JOYANES AGUILAR, LUIS (2007) Estructuras de Datos en Java. McGraw Hill. ISBN:
9788448156312.

• STANDISH, Thomas A (1998). Data structures in Java. Addison Wesley ISBN 0-201-
30564-X.

• WEISS, Mark Allen; (2000) Estructuras de Datos en Java. Addison Wesley. ISBN 84-
7829-035-4.

• WIRTH, Niklaus (1992). Algoritmos + Estructuras de Datos = Programas. Prentice-


Hall. ISBN: 84-219-0172-9.

También podría gustarte