You are on page 1of 117

RBOLES

Dr. Eric Manuel Rosales Pea Alfaro


Abril, 2008
Agenda
Definicin y Conceptos Bsicos
Operaciones bsicas
Aplicaciones
Representacin


25/04/2014 Arboles 2
Definicin y Conceptos bsicos
rbol binario
25/04/2014 Arboles 3
raz
izquierdo derecho
nodo
Definicin y Conceptos bsicos
rbol binario
25/04/2014 Arboles 4
A
B C
D E
G
F
H I
Definicin y Conceptos bsicos
rbol binario (NO ES)
25/04/2014 Arboles 5
A
B C
D E
G
F
H I
Definicin y Conceptos bsicos
rbol binario (NO ES)
25/04/2014 Arboles 6
A
B C
D E
G
F
Definicin y Conceptos bsicos
rbol binario (NO ES)
25/04/2014 Arboles 7
A
B C
D E
G
F
H I
Definicin y Conceptos bsicos
rbol binario
25/04/2014 Arboles 8
padre
hijo izquierdo hijo derecho
Definicin y Conceptos bsicos
rbol binario
25/04/2014 Arboles 9
A
B C
D E
G
F
H I
hojas
Definicin y Conceptos bsicos
rbol binario
25/04/2014 Arboles 10
A
B C
D E
G
F
H I
ancestro
descendiente
Definicin y Conceptos bsicos
rbol binario
25/04/2014 Arboles 11
A
B C
D E
G
F
H I
hermanos
Definicin y Conceptos bsicos
rbol estrictamente binario







Si tiene n hojas No Nodos = 2n-1
25/04/2014 Arboles 12
A
B C
D E
G F
Definicin y Conceptos bsicos
rbol binario (pero no estrictamente)
25/04/2014 Arboles 13
A
B C
D E
G
F
H I
Definicin y Conceptos bsicos
Nivel de un nodo

Raz = 0

Cualquier otro nodo = Nivel del padre + 1

25/04/2014 Arboles 14
Definicin y Conceptos bsicos
rbol binario







Nivel E = 2, H = 3
25/04/2014 Arboles 15
A
B C
D E
G
F
H I
Definicin y Conceptos bsicos
Profundidad

Mximo nivel de cualquier hoja en el rbol

Longitud trayectoria ms larga desde la
raz a cualquier hoja
25/04/2014 Arboles 16
Definicin y Conceptos bsicos
rbol binario







Profundidad = 3
25/04/2014 Arboles 17
A
B C
D E
G
F
H I
Definicin y Conceptos bsicos
rbol binario completo de profundidad
d

rbol estrictamente binario

Tiene todas sus hojas en el nivel d

25/04/2014 Arboles 18
Definicin y Conceptos bsicos
rbol binario completo profundidad 3
25/04/2014 Arboles 19
A
B C
D E G F
H I J K L M N N
Definicin y Conceptos bsicos
rbol binario
Tiene m nodos en el nivel l
Tendr a lo ms 2
m
nodos en el nivel l+1
Un rbol binario tiene 1 nodo en nivel 0
(raz)
Mximo 2
l
nodos en el nivel l
rbol binario completo prof. d, tiene
exactamente 2
l
en el nivel l entre 0 y d

25/04/2014 Arboles 20
Definicin y Conceptos bsicos
rbol binario completo
Total de nodos (t
n
)
1 2
2
2 2 2 2
1
0
2 1 0
=
=
+ + + + =
+
=

d
d
j
j
d
n
t
25/04/2014 Arboles 21
Definicin y Conceptos bsicos
rbol binario completo
Profundidad dado t
n
( ) 1 1 log
2
+ =
n
t d
25/04/2014 Arboles 22
Definicin y Conceptos bsicos
rbol binario casi completo
rbol binario de profundidad d
1. Cualquier nodo nd a un nivel menor que d-1
tiene dos hijos

2. Para cualquier nodo nd en el rbol con un
descendiente derecho en el nivel d, nd debe
tener un hijo izquierdo y cada descendiente
izquierdo de nd es una hoja en el nivel d o
tiene dos hijos
25/04/2014 Arboles 23
Definicin y Conceptos bsicos
rbol binario casi completo (No x 1)
25/04/2014 Arboles 24
A
B C
D
E
G F
Definicin y Conceptos bsicos
rbol binario casi completo (No x 2)
25/04/2014 Arboles 25
A
B C
D E G F
H I J K
Definicin y Conceptos bsicos
rbol binario casi completo
25/04/2014 Arboles 26
A
B C
D E G F
H I
Definicin y Conceptos bsicos
rbol binario casi completo
25/04/2014 Arboles 27
A
B C
D E G F
H I J
Definicin y Conceptos bsicos
rbol binario casi completo numerado
25/04/2014 Arboles 28
A
B C
D E G F
H I
1
2 3
4 5 6 7
8 9
Definicin y Conceptos bsicos
rbol binario casi completo
25/04/2014 Arboles 29
A
B C
D E G F
H I J
1
2 3
4 5 6 7
8 9 10
Definicin y Conceptos bsicos
rbol binario casi completo con n hojas
Estrictamente binario 2n-1 nodos

No estrictamente binario 2n nodos
25/04/2014 Arboles 30
Definicin y Conceptos bsicos
rbol estrictamente binario casi
completo
Si tiene n nodos y

Si n es impar
25/04/2014 Arboles 31
Definicin y Conceptos bsicos
rbol estrictamente binario casi completo
25/04/2014 Arboles 32
A
B C
D E G F
H I
1
2 3
4 5 6 7
8 9
Definicin y Conceptos bsicos
rbol binario casi completo (NEstric)
25/04/2014 Arboles 33
A
B C
D E G F
H I J
1
2 3
4 5 6 7
8 9 10
Definicin y Conceptos bsicos
Observacin
rbol binario casi completo de profundidad
d, est en medio del rbol binario completo
de profundidad d-1 (2
d
-1 nodos) y el rbol
binario completo de profundidad d (2
d+1
-1
nodos)
25/04/2014 Arboles 34
Definicin y Conceptos bsicos
Observacin
Si t
n
total nodos (rbol binario casi completo)



Ejemplo: t
n
e[4,7] profundidad = 2
Ejemplo: t
n
e[8,15] profundidad = 3
(
n
t x x d profundida
2
log / s =
25/04/2014 Arboles 35
Operaciones Bsicas
info(p)=A

25/04/2014 Arboles 36
A
p
Operaciones Bsicas
izquierda(p) = apuntador a B
25/04/2014 Arboles 37
A
B C
p
Operaciones Bsicas
derecha(p) = apuntador a C
25/04/2014 Arboles 38
A
B C
p
Operaciones Bsicas
padre(p) = apuntador a A
25/04/2014 Arboles 39
A
B C
p
Operaciones Bsicas
hermano(p) = apuntador a C
25/04/2014 Arboles 40
A
B C
p
Operaciones Bsicas
izquierda(p) = nulo
25/04/2014 Arboles 41
A
p
Operaciones Bsicas
derecha(p) = nulo
25/04/2014 Arboles 42
A
p
Operaciones Bsicas
padre(p) = nulo
25/04/2014 Arboles 43
A
B C
p
Operaciones Bsicas
hermano(p) = nulo
25/04/2014 Arboles 44
A
B C
p
Operaciones Bsicas
es_izquierdo(p) = verdadero
25/04/2014 Arboles 45
A
B C
p
Operaciones Bsicas
es_derecho(p) = verdadero
25/04/2014 Arboles 46
A
B C
p
Operaciones Bsicas
es_izquierdo(p)
q = padre(p);
if(q == null)
return(false); //p apunta a raz
if(izquierdo(q) == p)
return(true);
return(false)
25/04/2014 Arboles 47
Operaciones Bsicas
es_derecho(p)

EJERCICIO 1 PUNTO EXTRA
SOBRE 3 CALIFICACION
25/04/2014 Arboles 48
Operaciones Bsicas
hermano(p)
if(padre(p) == null)
return(false); //p apunta a raz
if(es_izquierdo(p))
return(derecho(padre(p)));
return(izquierdo(padre(p)));
25/04/2014 Arboles 49
Operaciones Bsicas
Complementarias
haz_arbol(x)
Contenido de la raz x

25/04/2014 Arboles 50
x
p
Operaciones Bsicas
Complementarias
pon_izquierdo(p,x)
crea hijo izquierdo de p

25/04/2014 Arboles 51
A
p
A
p
x
Operaciones Bsicas
Complementarias
pon_derecho(p,x)
crea hijo derecho de p

25/04/2014 Arboles 52
A
p
A
p
B B x
Aplicaciones
rboles de decisin
Encontrar todos los duplicados en una lista
25/04/2014 Arboles 53


Info sig info sig info sig info
sig

Lista


nodo nodo nodo nodo

nulo
Aplicaciones
rboles de decisin: duplicados
Si hay n elementos en la lista
necesitaremos comparaciones
25/04/2014 Arboles 54

=

1
1
) (
n
i
i n
Aplicaciones
rboles de decisin: duplicados
/*lee el primer nmero e insertarlo
en un rbol binario de nodo nico */
scanf(%d,&number);
tree = haz_arbol(number);
while(mientras haya nmeros izquierdos en la entrada){
scanf(%d,&number);
p = q = tree;
while(number != info(p) && q != NULL){

}
}
25/04/2014 Arboles 55
Aplicaciones
rboles de decisin: duplicados

p = q;
if(number < info(p))
q = izquierdo(p);
else
q = derecho(p);
}//fin(while)
if(number == info(p))
printf(%d is a duplicate\n,number);

}
25/04/2014 Arboles 56
Aplicaciones
rboles de decisin: duplicados

//insertar number a la derecha o izquierda
elseif(number < info(p))
pon_izquierdo(p,number);
else
pon_derecho(p,number);
}//fin(while)
25/04/2014 Arboles 57
Aplicaciones
rboles de decisin: duplicados en {14,
15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5}
25/04/2014 Arboles 58
14
15 4
3 9
7
5
18
16 20
17
Aplicaciones
Recorridos
Pasar por todo el rbol numerando cada
uno de sus nodos a la vez
Ej. Imprimir contenido

VISITAR
25/04/2014 Arboles 59
Aplicaciones
Recorridos
Definidos de manera recursiva

PREORDER: primero en profundidad

INORDER: orden simtrico

POSTORDER
25/04/2014 Arboles 60
Aplicaciones
Recorridos (PREORDER)

1. Visitar la raz
2. Recorrer el sub-rbol izquierdo en pre-
order
3. Recorrer el sub-rbol derecho en pre-
order
25/04/2014 Arboles 61
Aplicaciones
Recorridos (INORDER)

1. Recorrer el sub-rbol izquierdo en in-
order
2. Visitar la raz
3. Recorrer el sub-rbol derecho en in-order
25/04/2014 Arboles 62
Aplicaciones
Recorridos (POST-ORDER)

1. Recorrer el sub-rbol izquierdo en post-
order
2. Recorrer el sub-rbol derecho en post-
order
3. Visitar la raz
25/04/2014 Arboles 63
Aplicaciones
Recorridos






PREORDER: ABDGCEHIF
INORDER: DGBAHEICF
PORT-ORDER: GDBHIEFCA
25/04/2014 Arboles 64
A
C B
D
G
F E
H I
Aplicaciones
Recorridos






PREORDER: ABCEIFJDGHKL
INORDER: EICFJBGDKHLA
POSTORDER: IEJFCGKLHDBA
25/04/2014 Arboles 65
A
H
B
C D
F E
K J L I
G
Aplicaciones
Bsqueda binaria
Algoritmo similar al que encuentra
duplicados
Diferencia: insertar duplicados donde
corresponda
Si num<info(p) insertar en izquierdo
Si num>info(p) insertar en derecho
25/04/2014 Arboles 66
Aplicaciones
Bsqueda binaria {14, 15, 4, 9, 7, 18, 3, 5, 16,
4, 20, 17, 9, 14, 5}
25/04/2014 Arboles 67
14
15 4
3 9
7
5
18
16 20
17
9
14
5 4
Aplicaciones
Bsqueda binaria (propiedades)
elementos e subrbol(izquierdo(n)) son
menores que info(n)
elementos e subrbol(derecho(n)) son
mayores o iguales que info(n)
Recorrido inorder extraccin ordenada
ascendente

25/04/2014 Arboles 68
Aplicaciones
Expresiones matemticas
Con rboles estrictamente binarios
Raiz = operador
Sub-rbol izquierdo EXPRESION(operando
1)
Sub-rbol derecho EXPRESION(operando
2)
HOJAS operandos
25/04/2014 Arboles 69
Aplicaciones
Expresiones matemticas: A + B*C




25/04/2014 Arboles 70
+
* A
C B
Aplicaciones
Expresiones matemticas
Recorridos
25/04/2014 Arboles 71
PRE-ORDER = PREFIJA +A *BC
IN-ORDER = INFIJA A+B * C
POST-ORDER = POSTFIJA ABC*+
Aplicaciones
Expresiones matemticas: (A+B) * C
25/04/2014 Arboles 72
+
*
A
C
B
Aplicaciones
Expresiones matemticas
Recorridos



No se puede recuperar una expresin que
requiere parntesis
25/04/2014 Arboles 73
PRE-ORDER = PREFIJA *+ABC
IN-ORDER = INFIJA A + B * C
POST-ORDER = POSTFIJA AB+C*
Aplicaciones
Expresiones matemticas:







A+(B-C)*D$(E*F)
25/04/2014 Arboles 74
+
* A
C B
- $
D
F
*
E
Aplicaciones
Expresiones matemticas
Recorridos



No se puede recuperar una expresin que
requiere parntesis
25/04/2014 Arboles 75
PRE-ORDER = PREFIJA +A*-BC$D*EF
IN-ORDER = INFIJA A+BC*D$E*F
POST-ORDER = POSTFIJA ABC-DEF*$*+
Aplicaciones
Expresiones matemticas:







(A+ B*C)$((A+B)*C)
25/04/2014 Arboles 76
$
* +
C B
A C *
B
+
A
Aplicaciones
Expresiones matemticas
Recorridos



No se puede recuperar una expresin que
requiere parntesis
25/04/2014 Arboles 77
PRE-ORDER = PREFIJA $+A*BC*+ABC
IN-ORDER = INFIJA A+B*C$A+B*C
POST-ORDER = POSTFIJA ABC*+AB+C*$
Aplicaciones
Hacer ejercicios 5.1.1 5.1.14
(Tenembaum)

Recorridos en C (Tenembaum, pp 270-
273
25/04/2014 Arboles 78
Representacin
De arreglo vinculado
#define NUMNODOS 500
typedef struct nodo_struc{
int info;
int izquierdo;
int derecho;
int padre;
int es_izq;
int hermano;
}struc_node;
25/04/2014 Arboles 79
Representacin
De arreglo vinculado
struc_nodo node[NUMNODOS];
/* node[p].info, node[p].izquierdo,
node[p].derecho, node[p].padre,
node[p].hermano
*/
if(node[p].es_izq == 1) p es hijo
izquierdo
if(node[p].es_izq != 1) p es hijo derecho
if(node[p].padre == -1) p es raiz
25/04/2014 Arboles 80
Representacin
De arreglo vinculado
//alternativamente
if(node[p].padre < 0) hijo izquierdo

if(node[p].padre > 0) hijo derecho

abs(node[p].padre) apunta al padre de p
25/04/2014 Arboles 81
Representacin
De arreglo vinculado
//habilitar rbol
int avail, i;
for(i=0 ; i< NUMNODOS; i++){
node[i].izquierdo = i+1;
}
node[NUMNODOS-1].izquierdo = 0;
25/04/2014 Arboles 82
Representacin
Dinmica de nodos
//otra definicin
typedef struc tiponode{
int info;
tiponode *izquierdo;
tiponode *derecho;
tiponode *padre;
}nodetipo;

nodotipo *node_ptr;
25/04/2014 Arboles 83
Representacin
Dinmica de nodos (hazarbol)
node_ptr hazarbol(int x){
node_ptr p;
p = obten_nodo();
pinfo = x;
pizquierdo = NULL;
pderecho = NULL;
return(p);
}//fin hazarbol
25/04/2014 Arboles 84
Representacin
Dinmica de rboles (poner_izq)
void poner_izq(nodeptr p, int x){
if(p == NULL)
//error
elseif(pizquierdo != NULL)
//error de insercin
else
pizquierdo = hazarbol(x)
}
//para poner_der ajustar apuntadores
25/04/2014 Arboles 85
Representacin
Observaciones
Padre es innecesario si el rbol se recorre
siempre en forma descendente (de la raz a
las hojas). Ej. Recorridos vistos no lo
ocupan
25/04/2014 Arboles 86
Representacin
Observaciones
Izquierdo/Derecho son innecesarios si el
rbol se recorre en forma ascendente (de
las hojas a la raz)
25/04/2014 Arboles 87
Representacin
Nodos internos vs externos
Dado que las hojas no tienen hijos no
es necesario izquierdo/derecho


Usar dos conjuntos de nodos:
HOJAS/NO_HOJAS

25/04/2014 Arboles 88
Representacin
NO_HOJAS:
info (si hay informacin), izquierdo,
derecho

Registro dinmicos/arreglo de registros
controlados usando lista

25/04/2014 Arboles 89
Representacin
HOJAS:
No tiene izquierdo/derecho

Conservan informacin

Dinmicamente con campo nico info
25/04/2014 Arboles 90
Representacin
Nodos
NO_HOJAS internos

HOJAS externos

Todos deben ser especificados de manera
explcita
25/04/2014 Arboles 91
Representacin
Arreglo implcito rbol binario
Si n nodos de rbol binario casi completo
se numeran:
N(hijo_izquierdo)=2*N(padre)
N(hijo_derecho) = 2*N(padre)+1

Sin vnculos!!!???!!!
ARREGLO



25/04/2014 Arboles 92
Representacin
Arreglo implcito rbol binario
25/04/2014 Arboles 93
A
C B
D G F
E
H I
Representacin
Arreglo implcito rbol binario
25/04/2014 Arboles 94
A
C B
D G F
E
H I
A B C D E F G H I
0 1 2 3 4 5 6 7 8
Representacin
Arreglo implcito rbol binario



info(0) raz, info(1) izquierdo e
info(2) derecho
Hijo izquierdo de p 2p+1
Hijo derecho de p 2p+2

25/04/2014 Arboles 95
A B C D E F G H I
0 1 2 3 4 5 6 7 8
Representacin
Arreglo implcito rbol binario
izquierdo(p) = 2*p + 1

derecho(p) = 2*p + 2

Si p es_izquierdo, hermano(p) = p + 1

Si p es_derecho, hermano(p) =p - 1
25/04/2014 Arboles 96
Representacin
Arreglo implcito rbol binario
padre(p)= (p - 1)/2

p apunta a izquierdo p es impar
{p%2 != 0 p es impar}
25/04/2014 Arboles 97
Representacin
Arreglo implcito rbol binario
25/04/2014 Arboles 98
A
C B
D G F
E
H I J
Representacin
Arreglo implcito rbol binario
25/04/2014 Arboles 99
A
C B
D G F
E
H I J
0 1 2 3 4 5 6 7 8
A B C D E F G H I J
9
Representacin
Arreglo implcito rbol binario



info(0) raz, info(1) izquierdo e
info(2) derecho
Hijo izquierdo de p 2p+1
Hijo derecho de p 2p+2

25/04/2014 Arboles 100
A B C D E F G H I
0 1 2 3 4 5 6 7 8
Representacin
Arreglo implcito rbol binario
(generalizacin)
25/04/2014 Arboles 101
A
C B
E D
F G
Representacin
Arreglo implcito rbol binario
(generalizacin)
25/04/2014 Arboles 102
A
C B
E D
F G
Representacin
Arreglo implcito rbol binario
(generalizacin)
25/04/2014 Arboles 103
A
C B
E D
F G
0 1 2 3 4 5 6 7 8
A B C D E
9
F G
10 11 12
Representacin
Arreglo implcito rbol binario
(generalizacin)
25/04/2014 Arboles 104
H
J I
L K
M
Representacin
Arreglo implcito rbol binario
(generalizacin)
25/04/2014 Arboles 105
H
J I
L K
M
Representacin
Arreglo implcito rbol binario
(generalizacin)
25/04/2014 Arboles 106
H
J I
L K
M
0 1 2 3 4 5 6 7 8
H I J K L M
9
Representacin
Cul es mejor? Secuencial?
Ms sencilla
Asegurar apuntadores estn dentro lmites
Ahorra espacio en rboles casi completos
til si se sabe de antemano el nmero
mximo de nodos a almacenar

25/04/2014 Arboles 107
Representacin
Cul es mejor? Dinmica (vinculada)?
Requiere campos izquierdo, derecho y
padre (no necesario)
No hay limitacin en espacio en memoria
en contraste con el arreglo que se define
de antemano
25/04/2014 Arboles 108
Otros rboles
Arboles binarios hilvanados
Recorridos normales necesitan una pila,
cmo eliminar su uso?

Eficientar recorridos

25/04/2014 Arboles 109
Otros rboles
rboles binarios hilvanados
25/04/2014 Arboles 110
A
C B
D
G
F E
H I
Otros rboles
rboles binarios hilvanados
25/04/2014 Arboles 111
A
H
B
C D
F E
K J L I
G
Otros rboles
rboles binarios hilvanados
Definicin, Tenembaum, pp 273

Recorridos, Tenembaum, pp 274-277

Recorridos con campo padre, Tenembaum,
pp 277-279
25/04/2014 Arboles 112
Otros rboles
rboles binarios heterogneos
info(p) = tipo/estructura de datos
homogneo/uniforme
Pero, 3 + 4 * (6 7) / 5 + 3???

Cdigos, tenembaum, pp 280-281
25/04/2014 Arboles 113
Otros rboles
rboles binarios heterogneos
25/04/2014 Arboles 114
+
3 +
/
3
+
4 -
6 7
Ejercicios
Tenembaum, 5.2.1-5.2.13
25/04/2014 Arboles 115
Ms Aplicaciones
Algoritmo de Huffman
Compresin
Tenembuam, pp. 283-292
Listas como rboles binarios
Tenembam, pp. 292-294, 299-303
Localizacin del k-simo elemento
Tenembaum, pp. 294-296
25/04/2014 Arboles 116
Ms aplicaciones
Supresin de un elemento
Tenembaum, pp. 296-299
El problema de Josephus
Tenembaum, seccin 4.5 y pp. 303-30
Ms aplicaciones
Tenembaum, pp 305-320
Juegos (gato)
Tenembaum, pp. 321-328

25/04/2014 Arboles 117