You are on page 1of 38

ESTRUCTURAS DE DATOS

y ALGORITMOS
Licenciatura en Ciencias de la
Computacin

ARBOL
Estructuras de Datos y
Algoritmos

ARBOL
Un RBOL es una coleccin o conjunto de nodos. La
coleccin puede:
1 - Estar vaca
2 - Si no est vaca, consiste de un nodo distinguido r,
conocido como raz, y cero o ms (sub)rboles A1,
A2,......,Ak, cada uno de los cuales tiene su raz conectada a
r por medio de una arista (o rama) dirigida.

A1 A2 A3 Ak
Estructuras de Datos y
Algoritmos

ARBOL
La raz de cada subrbol es un hijo o descendiente directo de r, y r es el padre o antecesor directo de
cada raz de los subrboles.

Camino de un nodo ni a otro nk: secuencia de nodos n1, n2, ...., nk , tal que ni es el padre de ni+1 para
1<=i<k. En un rbol existe solamente un camino desde la raz a cada nodo.

Si hay un camino entre los nodos n1 y n2, entonces n1 es antecesor de n2 y n2 es descendiente de n1.

Longitud de camino de un nodo ni a otro nk: Nmero de aristas que forman el camino, o nmero de
nodos menos 1 que forman la secuencia. Existe un camino de longitud cero desde cada nodo a s mismo.

Nivel de un nodo: si el nodo x est en el nivel i, entonces sus descendientes directos estn en el nivel i+1.
La raz de un rbol, se define como localizada en el nivel 1.

Profundidad o Altura del rbol: mximo de los niveles de todos los nodos del rbol.

Grado de un nodo: Nmero de descendientes directos de un nodo.

Grado del rbol: Grado mximo en todos los nodos.

Nodo hoja: nodo de grado 0.

Nodo Interior: Nodo no hoja.

rbol Ordenado: rbol en el que las ramas de cada nodo estn ordenadas.
Estructuras de Datos y
Algoritmos

rbol Binario

Un rbol ordenado de grado 2 se denomina rbol


Binario.

Este rbol se define como un conjunto finito de


elementos (nodos) que:
es vaco o
consta de una raz (nodo) con dos rboles
binarios disjuntos llamados subrbol izquierdo y
derecho de la raz.
Estructuras de Datos y
Algoritmos

rbol Binario - Aplicacin

Generacin de Cdigos de
Huffman

Caracter A B C D E F G H I

Frecuencia 15 6 7 12 25 4 6 1 15
Estructuras de Datos y
Algoritmos

rbol Binario - Aplicacin

Generacin de Cdigos de
Huffman
- Paso 1: Generar una lista de caracteres (rboles
binarios), ordenada en forma creciente por sus frecuencias
de ocurrencia.
Cab

H1 F 4 B6 G6 C7 D 12 A 15 I 15 E 25
Estructuras de Datos y
Algoritmos

rbol Binario - Aplicacin

Generacin de Cdigos de
- Paso 2: Generar Huffman
repetidamente rboles binarios a partir de
aquellos con frecuencias menores, e insertarlos nuevamente en la
lista ordenada. La frecuencia asociada a la raz de cada nuevo rbol
es la suma de las frecuencias de sus subrboles.

Cab

H 5 6
F B G6 C 7
D 12 A 15
I 15
E 25

1 4
H F
Estructuras de Datos y
Algoritmos

rbol Binario - Aplicacin

Generacin de Cdigos de
Huffman

Cab

HF 11
7 B
G6 C D 12 A 15
I 15
E 25

H 5 6
F B

1 4
H F

Esta secuencia de supresiones, sntesis e inserciones se realiza


hasta el momento en que en la lista queda una sola celda, que
corresponde al rbol binario con todos los caracteres del diccionario
de entrada en sus hojas.
Estructuras de Datos y
Algoritmos

rbol Binario - Aplicacin

Generacin de Cdigos de
Huffman
Cab
IHFBDEGCA 91

IHFBD 38 EGCA 53

I 15 HFBD 23 E25 GCA 28

HF
B 11 D 12 GC 13 A 15

H 5
F B6 G6 C7

H1 F4
Estructuras de Datos y
Algoritmos

rbol Binario - Aplicacin


Paso 3: Generar el cdigo de longitud variable correspondiente
a cada carcter, hoja del rbol, concatenando ceros y unos,
segn se atraviese en el rbol una rama izquierda o una rama
derecha.
Ca CARACTER FRECUENCIA CDIGO
IHFBDEGC 91
b A
H 1 01000
0 1
F 4 01001
IHFBD38 EGCA 53
B 6 0101
0 1 0 1
I 15 HFBD23 E 25 GCA 28
G 6 1100

0 1 C 7 1101
0 1
HF 11 D 12 GC 13 A 15 D 12 011
B
0 1 0 1 A 15 111
H
F 5 B 6 G 6 C 7 I 15 00
0 1 E 25 10
H 1 F 4
Estructuras de Datos y
Algoritmos

rbol Binario - Aplicacin

EMISOR

HACE Mensaje original

CARACTER FRECUENCIA CDIGO


H 1 01000
CODIFICADOR
En este proceso se usan los cdigos
C 7 1101
generados para cada carcter del
A 15 111
diccionario
E 25 10

0100011111011 Mensaje codificado


0
01000 111 1101 10
Este proceso se
DECODIFICADOR apoya en el rbol
01000 111 1101 10 binario generado
para el
diccionario
Mensaje HACE H A C E
decodificado

RECEPTOR
Estructuras de Datos y
Algoritmos
T.A.D. rbol Binario de Bsqueda
Especificacin (1)
Un rbol Binario de Bsqueda ABB- es un rbol Binario
en el que:

Cada nodo contiene un campo clave (lo identifica en


forma nica dentro del rbol).
Los nodos del rbol estn ordenados de tal forma que
para cualquier nodo x del rbol,
- si z es un nodo cualquiera del subrbol izquierdo
de x, entonces la clave[z] < clave[x] y
- si z es un nodo cualquiera del subrbol derecho de x,
entonces clave[x] < clave[z].

Esta condicin es conocida como Propiedad del rbol Binario de


Bsqueda.
Estructuras de Datos y
Algoritmos

T.A.D. ABB Especificacin(2)


Operaciones Abstractas Sean A: rbol; X,Z : claves

NOMBRE ENCABEZADO FUNCION ENTRADA SALIDA


Crear Crear (A) Inicializa el rbol A A A=( )
Insertar Insertar(A, X) Ingresa el elemento X en el A, X A con X como hoja, si X
rbol A, mantenindolo A; Error en caso
como rbol binario de contrario
bsqueda.
Suprimir Suprimir(A, X) Elimina el elemento X del rbol A, X A sin el nodo que
A, mantenindolo como contena a X, si X
rbol binario de bsqueda. A; Error en caso
contrario
Hijo Hijo(A, X, Z) Evala si X es hijo de Z A, X, Z Verdadero si X es hijo de
Z, Falso en caso
contrario.
Padre Padre(A, X, Z) Recproca de la operacin Hijo A, X, Z
Nivel Nivel(A, X) Calcula el nivel de X A, X Reporta el nivel de X.
Hoja Hoja(A, X) Evala si X es nodo hoja A, X Verdadero si X es nodo
Hoja, Falso en caso
contrario.
Estructuras de Datos y
Algoritmos

T.A.D. ABB Especificacin(3)


Operaciones Abstractas Sean A: rbol; X,Z : claves

NOMBRE ENCABEZADO FUNCION ENTRADA SALIDA


Altura Altura(A) Evala la altura de A A Reporta la altura de A.
Camino Camino(A, X, Z) Recupera el camino de X a Z A, X, Z Reporta el camino de X a Z,
si X es ancestro de Z;
Error en caso contrario.
InOrden InOrden(A) Procesa A en Inorden A Est sujeta al proceso que se
realice sobre los
elementos de A

PreOrden PreOrden(A) Procesa A en Preorden A Est sujeta al proceso que se


realice sobre los
elementos de A

PostOrden PostOrden(A) Procesa A en Postorden A Est sujeta al proceso que se


realice sobre los
elementos de A

Buscar Buscar(X,A) Localiza el nodo con clave X en A,X Reporta los datos asociados
el rbol A con X, si X A; Error
en caso contrario
Estructuras de Datos y
Algoritmos

T.A.D. ABB Representacin

Sub rbol Sub rbol


Izquierdo Derecho
T.A.D. ABB Algoritmos
Estructuras de Datos y

Construccin de Operaciones Abstractas


(1)

70
Buscar(A,X
)
47 92

35 68 83 100

79

Si (sub)rbol vaco
entonces Error- Elemento Inexistente.
Si Clave [X] =Clave [R] (R:nodo raz de
(sub)rbol)
entonces xito- Elemento existente
Si Clave [X] < Clave [R] (R:nodo raz de
(sub)rbol)
entonces Buscar ((sub)rbol
izquierdo( R), X)
Si Clave[X] >Clave [R] (R: nodo raz de
(sub)rbol)
T.A.D. ABB Algoritmos
Estructuras de Datos y

Construccin de Operaciones Abstractas


(2)
70

4 9
7 2
100 Si (sub)rbol vaco
3 6 8
5 8 3
entonces xito- X nueva hoja
Si Clave [X] = Clave [R] (R:nodo raz de
7 (sub)rbol)
9 entonces Error- Elemento ya existente
Insertar (A,X=91) Si Clave [X] < Clave [R] (R:nodo raz de
(sub)rbol)
entonces Insertar((sub)rbol
izquierdo( R),X)
70 Si Clave[X] >Clave [R] (R: nodo raz de
(sub)rbol)
9 entonces Insertar ((sub)rbol
4
7 2 derecho(R), X)
100
3 6 8
5 8 3

7 91
T.A.D. ABB Estructuras de Datos y
Algoritmos
Construccin de Operaciones Abstractas
(3)

70

92
47

35 68 83 100

79

70
Suprimir (A ,
X=79)
92
47

35 68 83 100
T.A.D. ABB Estructuras de Datos y
Algoritmos
Construccin de Operaciones Abstractas
(4)

70

92
47

35 68 83 100

79

70
Suprimir (A ,
X=83)
92
47

35 68 79 100
T.A.D. ABB Estructuras de Datos y
Algoritmos
Construccin de Operaciones Abstractas
(5)

70 Si (sub)rbol vaco
entonces Error -elemento inexistente
sino
92 Si Clave [X] = Clave [R] (R: nodo raz de (sub)rbol)
47 entonces
Si Grado(R) = 0
entonces eliminar nodo R
35 68 83 Si Grado(R) = 1
100
entonces Padre(R) Hijo(R)
Si Grado(R) = 2
79 entonces R Mximo ((sub)rbol-izquierdo
(R))
Eliminar (Mximo((sub)rbol-
izquierdo(R)))
Suprimir (A , 68

X=70)
47 92

35 83 100

79
T.A.D. ABB Algoritmos
Estructuras de Datos y

Construccin de operaciones abstractas


(6)

Recorridos
R

A B
Preorden Postorden
Si Arbol no vaco Si Arbol no vaco
Entonces Entonces
Procesar nodo R Procesar A en
Procesar A en Postorden
Preorden Procesar B en
Inorden Postorden
Procesar B en
Si Arbol no vaco Procesar nodo R
Preorden
Entonces
Procesar A en
Inorden
Procesar nodo R
Estructuras de Datos y
Algoritmos

T.A.D. ABB Aplicacin


NDICE DE REFERENCIAS CRUZADAS

ENTRADA SALIDA

al 3
C 1
de 1, 4
1 . `El editor de editor 1
lenguaje C entorno 2,
2 . presenta un entorno 3
3 . similar al entorno el 1
4 . de lenguaje Pascal` Lenguaje 1, 4
Pascal 4
presenta
2
similar 3
un 2
Estructuras de Datos y
Algoritmos

rbol Binario Tipos

Cuntas comparaciones se realizan en una


bsqueda, en el peor de los casos, en un ABB ?

rbol Binario Relleno: Es aquel rbol en el que


todo nodo o bien es una hoja, o tiene dos hijos.

rbol Binario Completo: Es un rbol binario


relleno en el que todas las hojas estn en el
mismo nivel.

Cuntas comparaciones se realizan en una bsqueda,


en el peor de los casos, en un ABB Completo?
Estructuras de Datos y
Algoritmos

ABB Completo
70

47 92

35 68 83 95

27 42 50 69 79 90 93 99

N 1 3 7 15
N = 2C 1 N + 1= 2C
C 1 2 3 4 log 2 (N+1)= C (log 2
2)
log 2 (N+1)= C
Estructuras de Datos y
Algoritmos

Arbol Balanceado- AVL

Un rbol es perfectamente equilibrado, si


para cada nodo los nmeros de nodos en sus
subrboles izquierdo y derecho difieren
cuanto ms en uno.

Un rbol est balanceado si y solo si en cada


nodo las alturas de sus dos subrboles
difieren a lo mximo en uno.
T.A.D. Arbol Balanceado Estructuras de Datos y
Algoritmos
Construccin de operaciones abstractas
(1)

Insercin en un rbol Balanceado

a) Si altura(I(r)) < altura(D(r)) y X se inserta en I(r)

70 Insertar(A,X=47 70
)

92 47 92
T.A.D. Arbol Balanceado Estructuras de Datos y
Algoritmos
Construccin de operaciones abstractas
(2)
Insercin en un rbol Balanceado

b) Si altura(I(r)) = altura(D(r)) y X se inserta en I(r),

70
70
Insertar(A,X=35 o
68)
47 92
47 92

35 68
T.A.D. Arbol Balanceado Estructuras de Datos y
Algoritmos
Construccin de operaciones abstractas
(3)
Insercin en un rbol Balanceado

c) Si altura(I(r)) > altura(D(r)) y X se inserta en I(r)

70 70

Insertar(A,X=27 o 42 o 50 o
47 92 69) 47 92

35 68 35 68

27 42 50 69

REBALANCEAR !!
T.A.D. Arbol Balanceado
Estructuras de Datos y
Algoritmos
Construccin de operaciones abstractas
(4)
A 70

B 47 92
R
E
B C 35 68
A A
L S
27 42
A O
N
C 1
B
E 47

O A
3 7
5 0

2 42 6 9
7 8 2
T.A.D. Arbol Balanceado
Estructuras de Datos y
Algoritmos
Construccin de operaciones abstractas
(5)
70
C

A 47 92
R
E B
B C 35 68

A A
L S 69
50
A O
N
C 2
E
B 68
O
A C
4 7
7 0

3 5 6 9
5 0 9 2
Estructuras de Datos y
Algoritmos

rbol B
rbol B, rbol multicamino de orden n:

1 ) Cada pgina contiene a lo sumo 2n elementos (claves).

2 ) Cada pgina, excepto la pagina raz, contiene n elementos por lo


menos.

3 ) Cada pgina es una pgina de hoja, o sea que no tiene


descendientes, o tiene m+1 descendientes, donde m es su
nmero de claves en esa pgina (n<=m<=2n).

4 ) Todas las pginas hoja aparecen al mismo nivel.


Estructuras de Datos y
Algoritmos

rbol B de rden 2
25

10 20 30 40

2 8 9 15 17 22 24 27 28 33 35 46 48

m : cantidad de claves en la pgina


m p0 k1 k2
ki : clave; 1<=i<=m
k2n p0 : direccin de la pgina que contiene
claves menores que k1
pi : direccin de la pgina que contiene
claves mayores que ki y menores que ki+1
pm : direccin de la pgina que contiene
p1 p2n
claves mayores que km

1) ki < x < ki+1 (1 <= i < m) entonces la bsqueda continua por la


Cmo se pgina apuntada por pi
realiza la 2) km < x ; entonces la bsqueda continua por la pagina
bsqueda de apuntada por pm
3) x < k1; entonces la bsqueda continua por la pagina
una clave x? apuntada por p0
Estructuras de Datos y
Algoritmos
T.A.D.Montculo Binario -
Especificacin
rbol Binario Semicompleto: Un rbol Binario
Semicompleto de n nodos, se forma a partir de un rbol
binario completo de n+q nodos, quitando las q hojas extremo
derechas del rbol binario completo.
Montculo Binario: Un Montculo Binario es un rbol binario
semicompleto en el que el valor de clave almacenado en
cualquier nodo es menor o igual que el valor de clave de sus
hijos.
Operaciones Abstractas M: Montculo Binario y X: Clave

NOMBRE ENCABEZADO FUNCIN ENTRADA SALIDA

Insertar Insertar(M, X) Ingresa el elemento X al M, X M con el nuevo


montculo M elemento

Eliminar_Mnimo Eliminar_Mnimo (M, X) Suprime del montculo M el M M y


elemento de mxima prioridad- X: elemento de
mnimo valor de clave mxima prioridad
Estructuras de Datos y
Algoritmos
T.A.D.Montculo Binario -
Representacin
Montculo Binario desde una perspectiva
conceptual
10

20 30

40 50 60 70

80 90 100
Padre : Elementos [ i /
2 ]
Elementos [ i Hijo Izquierdo : Elementos [ i *
Elementos ] 2]
Hijo Derecho : Elementos [ i * 2 +
10 20 30 40 50 60 70 80 90 100 .. 1]

0 1 2 3 4 5 6 7 8 9 10

Montculo Binario en su
almacenamiento
T.A.D.Montculo Binario Estructuras de Datos y
Algoritmos
Construccin de operaciones abstractas
(1)

Tanto la operacin Insertar como Eliminar_Mnimo, deben


garantizar que en el Montculo Binario se mantengan las
siguientes dos propiedades:

Propiedad de Estructura, que tiene que ver con que el


objeto de datos sea un rbol binario semicompleto.

Propiedad de Orden, que es la que establece la relacin


entre los valores de las claves de cada nodo respecto a los
valores de claves de sus hijos, esto es, el valor de clave
almacenado en cualquier nodo debe ser menor o igual que el
valor de clave de sus hijos.
T.A.D.Montculo Binario Estructuras de Datos y
Algoritmos
Construccin de operaciones abstractas
(2)
Insertar (M,X=35)
a) Propiedad de
10
Estructura
20 30
Elementos

40 50 60 70 10 20 30 40 50 60 70 80 90 100 35
0 1 2 3 4 5 6 7 8 9 10
80 90 100 11
35

b) Propiedad
de 10

Orden
20 30
Elementos

40 35 60 70 10 20 30 40 35 60 70 80 90 100 50
0 1 2 3 4 5 6 7 8 9 10
80 90 100 11
50
T.A.D.Montculo Binario Estructuras de Datos y
Algoritmos
Construccin de operaciones abstractas
(3)
Eliminar_Mnimo (M, X)

20 30 50

a) Propiedad de 20 30
40 35 60 70
Estructura
40 35 60 70
80 90 100
50

80 90 100

Elementos

20 30 40 35 60 70 80 90 100 50 .. Elementos

0 1 2 3 4 5 6 7 8 9 10 50 20 30 40 35 60 70 80 90 100 ..
11
0 1 2 3 4 5 6 7 8 9 10
11
T.A.D.Montculo Binario Estructuras de Datos y
Algoritmos
Construccin de operaciones abstractas
(3)
Eliminar_Mnimo (M, X)

b) Propiedad de
Orden

20 20

50 30 35 30

40 35 60 70 40 50 60 70

80 90 10 80 90 10
0 0

Elementos Elementos

20 50 30 40 35 60 70 80 90 100 .. 20 35 30 40 50 60 70 80 90 100 ..

0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11

You might also like