Professional Documents
Culture Documents
rboles
1
Contenidos
Concepto de rbol
Terminologa
Implementacin
Casos especiales
rboles binarios de bsqueda
Montculos (heaps)
2
Cita
3
Concepto de rbol
4
Ejemplos
5
Ejemplos
2. Sistema de ficheros
6
Ejemplos
7
Definicin no recursiva
8
Definicin no recursiva
9
Definicin recursiva
Un rbol es:
o Vaco
o Un nodo y cero o ms rboles conectados
al nodo mediante una arista
11
Definicin recursiva
12
Definicin recursiva
13
Definicin recursiva
14
Definicin recursiva
15
Terminologa
b 1 1 3 Interno
c 0 1 1 Externo
d 0 1 1 Externo
e 0 1 1 Externo
f 0 2 1 Externo
g 0 2 1 Externo
18
Ejercicio 1
b 1 1 3 Interno
c 0 1 1 Externo
d 1 1 2 Interno
e 2 1 4 Interno
f 0 2 1 Externo
g 0 2 1 Externo
h 0 2 1 Externo
i 0 2 1 Externo
j 1 2 2 Interno
k 0 3 1 Externo
19
Terminologa: rbol ordenado
20
Terminologa: rbol binario
boolean isEmpty();
E getInfo() throws BTreeException;
BTree<E> getLeft() throws BTreeException;
BTree<E> getRight() throws BTreeException;
String toStringPreOrder();
String toStringInOrder();
String toStringPostOrder();
String toString(); // preorder
int size();
int height();
23
Una interfaz varias implementaciones
24
La clase LBNode
private E info;
private BTree<E> left;
private BTree<E> right;
25
Ejercicio 2
Completa la implementacin de
la clase LBNode.
26
La clase LBTree
public LBTree() {
root = null;
}
27
La clase LBTree
Tamao: size()
Altura: height()
Recorridos
o Pre-orden: toStringPreOrder()
o In-orden: toStringInOrder()
o Post-orden: toStringPostOrder()
29
La clase LBTree: size()
30
La clase LBTree: height()
32
Recorrido Pre-orden
33
La clase LBTree:
toStringPreOrder()
public String toStringPreOrder() {
if (isEmpty()) {
return "";
} else {
return root.getInfo().toString() + " " +
root.getLeft().toStringPreOrder() +
root.getRight().toStringPreOrder();
}
}
34
Recorrido Post-orden
35
La clase LBTree:
toStringPostOrder()
public String toStringPostOrder() {
if (isEmpty()) {
return "";
} else {
return root.getLeft().toStringPostOrder() +
root.getRight().toStringPostOrder() +
root.getInfo().toString() + " ";
}
}
36
Recorrido In-orden (simtrico)
37
La clase LBTree:
toStringInOrder()
public String toStringInOrder() {
if (isEmpty()) {
return "";
} else {
return root.getLeft().toStringInOrder() +
root.getInfo().toString() + " " +
root.getRight().toStringInOrder();
}
}
38
Ejercicio 3
39
Diferente notacin matemtica
40
Actividad
41
Programacin de sistemas
rboles (II)
42
Contenidos
Concepto de rbol
Terminologa
Implementacin
Casos especiales
rboles binarios de bsqueda
Montculos (heaps)
43
Notacin
Hasta ahora:
o Un nodo, tres atributos: informacin almacenada,
subrbol izquierdo y subrbol derecho
o Un rbol, un atributo: nodo raz
Al pintar un rbol representamos la informacin
almacenada como el contenido de cada nodo
44
Notacin
A partir de ahora:
o Aadimos un atributo ms: la clave (key)
Facilita la utilizacin del rbol en operaciones de bsqueda,
insercin, eliminacin
Dependiendo de la implementacin, la clave puede aadirse
como atributo del nodo o como atributo del rbol
Al pintar el rbol
* 4 Color oscuro: Clave
Color claro: Informacin
+ 2 - 8
A 1 B 3 C 6 D 9 45
Ejemplo de uso de claves
E U U Q E
3 2 4 1 5
*1 Valor de
prioridad mximo
COLA CON PRIORIDAD
Q U E U E
46
Ejemplo de uso de claves
47
rboles binarios de bsqueda
48
rboles binarios de bsqueda:
Concepto
todas las claves de los nodos del subrbol izquierdo son menores que la
clave de n (o iguales)
49
Ejemplo (I)
2 8
1 3 6 9
3 5 7
Representacin nicamente de las claves (no se incluye la informacin almacenada)
Implementacin errnea (en el subrbol izquierdo de 2 hay una clave mayor que 2)
50
Ejemplo (II)
6 9
4 7
2 5
1 3
Implementacin correcta de rbol binario de bsqueda
51
Operacin: Bsqueda
Buscamos el 3:
3<4: Subrbol izquierdo
3>2: Subrbol derecho 4
3=3: Elemento encontrado
2 8
1 3 6 9
5 7
http://www.cosc.canterbury.ac.nz/mukundan/dsal/BST.html
52
Operacin: Insercin
Insertar 6:
6<7: Subrbol izquierdo
6>2: Subrbol derecho 7
6>5: Subrbol derecho
Hueco libre: insertar
2 9
1 5
3 6
53
Ejercicio 4
2 9
1 5
3 6 54
Operacin: Eliminar (I)
2 9
1 5
3 6
55
Operacin: Eliminar (II)
2 9
1 6
5
56
Operacin: Eliminar (III)
2
3 9
1 5
3 6
http://www.ibr.cs.tu-bs.de/courses/ss98/audii/applets/BST/BST-Example.html
57
Ejercicio 5
2 9
1 5
3 58
Actividad
http://www.ibr.cs.tu-bs.de/courses/ss98/
audii/applets/BST/BST-Example.html
59
Montculos (heaps)
Aplicaciones:
Colas con prioridad
Ordenacin
60
Montculos: propiedades
No Completo
Completo
No Completo 61
Ejemplo (1)
2 4
3 5 6 9
8 7
5 6
2 8 4 3
9 1
2 4
3 5 6 9
8 7
S es un montculo
64
Implementacin basada en secuencias
1 p(root)=1
p(x.left)=2*p(x)
p(x.right)=2*p(x)+1
2 3
4 5 6 7
1 2 3 4 5 6 7
65
Insertar
Insertar elemento
con clave 2
4
5 6
15 9 7 20
16 25 14 12 11 8
66
Insertar
Insertar elemento
con clave 2
4
5 6
15 9 7 20
16 25 14 12 11 8 2
67
Insertar
Insertar elemento
con clave 2
4
5 6
15 9 7 2
16 25 14 12 11 8 20
68
Insertar
Insertar elemento
con clave 2
4
5 2
15 9 7 6
16 25 14 12 11 8 20
69
Insertar
Insertar elemento
con clave 2
2
5 4
15 9 7 6
16 25 14 12 11 8 20
70
Ejercicio 6
5 4
15 9 7 6
16 25 14 12 11 8 20 71
Eliminar
Eliminar elemento
con clave 4
4
5 6
15 9 7 20
16 25 14 12 11 8
72
Eliminar
4 8
5 6
15 9 7 20
16 25 14 12 11
73
Eliminar
Eliminar elemento
con clave 4
5
8 6
15 9 7 20
16 25 14 12 11
74
Ejercicio 7
8 6
15 9 7 20
16 25 14 12 11
75
Ejemplo
Montculo - Cola con prioridad
http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Priority-Q/
76
Ejemplo
Montculo - Cola con prioridad
http://www.cosc.canterbury.ac.nz/mukundan/dsal/MinHeapAppl.html
77