Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cita
1
Definición no recursiva
Ejemplo
El padre de h
p hermano
Un hijo de p de h
Hojas
Hojas Hojas
Hojas
(sin (sin
hijos) (sin(sin
hijos)
hijos) hijos)
cdk@it.uc3m.es Java: Árboles / 4
2
Ejemplo
El padre de h
p hermano
Un hijo de p de h
Hojas
Hojas Hojas
(sin (sin
hijos) (sin(sin
hijos)
hijos) hijos)
cdk@it.uc3m.es Java: Árboles / 5
aUn árbol es
¾Un nodo
¾o un nodo y subárboles conectados con el
nodo por medio de una arista a su raíz
No incluye
al árbol vacío
3
Definición recursiva (2)
aUn árbol es
¾vacío
¾o un nodo y cero o más subárboles no vacíos
conectados con el nodo por medio de una
arista a su raíz
Ejemplos
4
(()(()())())
()
() () ()
() ()
Terminología
5
Terminología
Terminología
6
Algoritmos básicos
class NodoB {
Object d;
NodoB izq;
NodoB der;
NodoB() {this(null);}
NodoB(Object o) {this(o,null,null);}
NodoB(Object o, NodoB i, NodoB d)
{d=o; izq=i; der=d;}
7
...Clase Nodo binario
class ArbolB {
protected NodoB raiz;
ArbolB() {raiz=null;}
ArbolB(Object o){raiz=new NodoB(o);}
public int size()
{return NodoB.size(raiz);}
public int height()
{return NodoB.height(raiz);}
8
...Clase Árbol binario
p
public void p
preorder ()
{if (raiz!=null) raiz.preorder();}
public void inorder ()
{if (raiz!=null) raiz.inorder();}
public void postorder ()
{if (raiz!=null) raiz.postorder();}
}
Tamaño
9
Altura
Recorrido de Euler
10
Recorrido preorden
2 3
4 6
5 7
cdk@it.uc3m.es Java: Árboles / 21
Recorrido postorden
1 6
3 5
2 4
cdk@it.uc3m.es Java: Árboles / 22
11
Recorrido inorden
(simétrico)
1 5
3 7
4 6
cdk@it.uc3m.es Java: Árboles / 23
(A+B)*(C–D)
+ –
A B C D
12
Actividad
Ejemplo
A+B C
A+B–C –+ABC
+ABC AB+C
AB+C–
13
Notación postfijo
aCalculadoras HP
aPila para almacenar operandos
aEj.: 3 5 + 6 2 – *
2
54
6
32
38
cdk@it.uc3m.es Java: Árboles / 27
preorden
14
postorden
inorden
15
Propiedades de
árboles binarios
aSea
¾ E=Número de nodos externos
¾ I=Número de nodos internos
¾ N=Tamaño=E+I
¾ H=Altura
aSe cumple
p
¾ E=I+1
¾ H+1≤E≤2H H≤I≤2H-1 2*H+1≤N≤2H+1-1
¾ log2(N+1)-1≤H≤(N-1)/2
Implementaciones
aBasada en secuencia
aBasada en estructura enlazada
16
Implementación
basada en secuencia
1 p(raiz)=1
p(x.izq)=2*p(x)
p(x.der)=2*p(x)+1
2 3
4 5 6 7
1 2 3 4 5 6 7
Implementación
basada en enlaces
2 3
4 5 6 7
17
Árboles binarios
de búsqueda
Ejemplo
4
1
2 8
2
1 3 6 9
3
3 5 7
18
Ejemplo
8
1
6 9
2
4 7
3
2 5
4
1 3
cdk@it.uc3m.es Java: Árboles / 37
Operaciones
aBúsqueda
aInserción
aEliminación
19
Búsqueda
Buscamos el “3”:
• 3<4: Subárbol
á izquierdo
• 3>2: Subárbol derecho 4
• 3=3: Elemento encontrado
2 8
1 3 6 9
http://www.cosc.canterbury.ac.nz/
mukundan/dsal/BST.html
5 7
Inserción
20
Eliminación
7 7
• Es complicado ya que los nodos
2 9 2 9 internos mantienen al árbol
conectado. Para eliminar:
1 5 1 – Si se trata de una hoja se
elimina directamente
– Si tiene un único hijo se
3 Elimino el 5 (1 hijo) 3 elimina el nodo haciendo que
su nodo padre pase a
referenciar a su nodo hijo
7 7
– Si tiene dos hijos :
– Se sustituye el nodo por el
2 9 3 9 menor elemento de su
subárbol derecho
– Se elimina el nodo
1 5 1 5 correspondiente a dicho
menor elemento
Elimino el 2 (2 hijos)
3
cdk@it.uc3m.es Java: Árboles / 41
Actividad
21
Montículos (Heaps)
Ejemplo
2 4
3 5 6 9
8 7
22
Montículo completo
2 4
3 5 6 9
8 7
Insertar
5 6
15 9 7 20
16 25 14 12 11 8
cdk@it.uc3m.es Java: Árboles / 46
23
Insertar
5 6
15 9 7 20
16 25 14 12 11 8 2
cdk@it.uc3m.es Java: Árboles / 47
Insertar
5 6
15 9 7 2
16 25 14 12 11 8 20
cdk@it.uc3m.es Java: Árboles / 48
24
Insertar
5 2
15 9 7 6
16 25 14 12 11 8 20
cdk@it.uc3m.es Java: Árboles / 49
Insertar
5 4
15 9 7 6
16 25 14 12 11 8 20
cdk@it.uc3m.es Java: Árboles / 50
25
Eliminar
5 6
15 9 7 20
16 25 14 12 11 8
cdk@it.uc3m.es Java: Árboles / 51
Eliminar
5 6
15 9 7 20
16 25 14 12 11
cdk@it.uc3m.es Java: Árboles / 52
26
Eliminar
8 6
15 9 7 20
16 25 14 12 11
cdk@it.uc3m.es Java: Árboles / 53
Actividad
aProbar el formulario de
http://www.csse.monash.edu.au/~lloyd
/tildeAlgDS/Priority-Q/
27
Actividad
aProbar el applet de
http://www.cosc.canterbury.ac.nz/
mukundan/dsal/MinHeapAppl.html
28