Sie sind auf Seite 1von 39

Conversion de un Arbol de

Grado n a Grado 2

Convertir un rbol n-ario a binario


Un rbol es una estructura de datos muy importante en el mundo de la
programacin, sin embargo el tipo de rbol que se usa comnmente por sus
propiedades es el rbol binario (rbol donde cada nodo tiene a lo mximo 2
nodos descendientes o nodos hijo). Es muy natural definir arboles n-arios
(arboles donde los nodos pueden tener cualquier cantidad de hijos) y para
usar las propiedades de los arboles binarios hacer la respectiva conversin.

Conversion de un Arbol de Grado n a Arbol Binario

Paso 1

Paso 2

Paso 3
Paso 4

SESION 11
Estructura de Datos
Arbol de Huffman
Arboles del Monton
Grafos Dirigidos
Grafos No Dirigidos

Arbol de Huffman

Arbol de Huffman
(Algoritmo)
El algoritmo de Huffman es un algoritmo
para la construccin de cdigos de Huffman,
desarrollado por David A. Huffman en 1952
y descrito en A Method for the Construction
of Minimum-Redundancy Codes.
Permite la compresin y encriptacin de
mensajes de entrada, utilizando un mnimo
de bits para ello.
El algoritmo que crea el rbol de Huffman, que
llamado tambin algoritmo voraz

La solucin se obtiene aplicando las siguientes fases:


Fase 1
Crear un vector de frecuencias de aparicin de cada byte en el archivo
de entrada.
Ejm.
Se ingresa el texto HOLA PAPA
H, O,L se repite una vez
P se repite dos veces
A se repite tres veces

1
1

Vector de Frecuencias

H 1

O 1

L 1

P 2

A 3

NULL

H.1
1
0.1
1
L.1
1
.11
P.2
2
A.3
4

Algoritmo de Huffman

H
H 1

O
O 1

A
L 1

P 2

NUL
L
H

A 3

NULL

Algoritmo de Huffman

H
L 1

O
1

A
P 2

P
n
1

P
A 3

NULL

n1
H 1

O 1

Algoritmo de Huffman

H
L 1

O
1

P
n
1

P 2

H 1

P
A 3

O 1

A
NULL

Algoritmo de Huffman

P
n
1

P 2

H 1

P
A 3

A
NULL

O 1

n2

Algoritmo de Huffman

L
n
1

P 2

H 1

A
n
2

O 1

L 1

A
A 3

NULL

n2

Algoritmo de Huffman

L
n
1

P 2

H 1

A
n
2

O 1

L 1

A
A 3

NULL

Algoritmo de Huffman

n
3

P
n
2

4
L 1
n
1

P 2

A
n
3

A 3

n
1

P 2

2
H 1

H 1

NULL

O 1

O 1

Algoritmo de Huffman

n
4

n
2

L 1

P
n
3

A 3

A
n
4

n
1

P 2

H 1

n
2

O 1

L 1

NULL

A 3

Arbol de Huffman

O
n
3

n
4

n
1

P 2

H 1

n
2

O 1

L 1

NULL

A 3

Arbol de Huffman
n
5

n
3

NULL

n
4

n
1

P 2

H 1

n
2

O 1

L 1

A 3

Fase 3
Identificando los caminos de los nodos
Colocar 0 a la rama izquierda
Colocar 1 a la rama derecha
Indicar la longitud de cada nodo que
contiene una letra
0

Vector de Frecuencias
n
5

0
n
3

NULL

n
4

P 2

n
1

0
H 1

0
n
2

1
O 1

0
L 1

A 3

1
1

Algoritmo de Huffman

Fase 4
Crear una tabla de codificacin
a partir del rbol de codificacin.

010

011

100

101

00

11

Algoritmo de Huffman

Fase 5
Crear las secuencia codificada segn el mensaje y la tabla
de codificacin

010 011 100 11

00

11

P
00

A
11

Operaciones con los rboles de


Huffman

Insertar Nodos en el rbol


ARBOL MONTON
Eliminar Nodos
Buscar Nodo

rbol binario completo


Un rbol binario completo es un rbol binario de profundidad K
que tiene todos los nodos posibles hasta el penltimo nivel
(profundidad K-1), y donde los elementos del ltimo nivel estn
colocados de izquierda a derecha sin dejar huecos entre ellos.

Ejemplo de rbol binario completo de


profundidad K=3, donde puede verse
que est lleno hasta el nivel 2, y que
los 5 nodos del ltimo nivel estn
situados de izquierda a derecha sin
dejar huecos libres.

rbol binario completo

Ejemplo de rbol binario no completo


de profundidad K=4, ya que en el
ltimo nivel los nodos no se han
insertado sin dejar huecos.

Otro rbol binario no completo, ya


que no est lleno hasta el
penltimo nivel.

Arboles de Montn o Heap


La estructura heap es frecuentemente
usada para implementar colas de
prioridad.
En este tipo de colas, el elemento a ser
eliminado (borrados) es aqul que tiene
mayor (o menor) prioridad.
En cualquier momento, un elemento con
una prioridad arbitraria puede ser
insertado en la cola.
Una estructura de datos que soporta
estas dos operaciones es la cola de
prioridad mxima (mnima).

Arboles de Montn o Heap


Existen tres categoras de un heap:max heap, min heap y minmax heap.

Un max (min) tree es un rbol en el cual el valor de la llave de


cada nodo no es menor (mayor) que la delos valoresde las llaves
de sus hijos (si tiene alguno).
Un max heap es un rbol binario completo que es tambin un max
tree.
Un min heap es un rbol binario completo que es tambin un min
tree.
De la definicin se sabe que la llavedelroot de un min tree es la
menor llave del rbol,mientras quela del root de un max tree es
la mayor.
Si la llave (key) de cada nodo es mayor que o igual a las llaves de
sus hijos, entonces la estructura heap es llamada max heap.

Arboles de Montn o Heap


Ejemplo de un Max Heap
El nodo padre siempre ser
mayor de sus descendientes
El nodo raz contiene el
valor mas alto

Arboles de Montn o Heap


Si la llave (key) de cada nodo es
menor que o igual a las llaves de sus
hijos, entonces la estructura heap es
llamada min heap.

En una estructura min-max heap, un nivel satisface


la propiedad min heap, y el siguiente nivel inferior
satisface la propiedad max heap, alternadamente.
Las operaciones bsicas de un heap
son:
Creacin de un heap vaco
Insercin de un nuevo elemento en
la estructura heap.
Eliminacin del elemento ms
grande del heap.

Propiedades
Un heap tiene las siguientes tres propiedades:

Es completo, esto es, las hojas de un rbol estn en a lo mximo


dos niveles adyacentes, y las hojas en el ltimo nivel estn en la
posicin ms a la izquierda
Cada nivel en un heap es llenado en orden de izquierda a derecha.
Est parcialmente ordenado, esto es, un valor asignado, llamado
key del elemento almacenado en cada nodo (llamado parent), es
menor que (mayor que) o igual a las llaves almacenadas en los
hijos de los nodos izquierdo y derecho.

Ejercicios

Ejercicio 1
Utilizando el algoritmo de Huffman, construir el rbol y la
tabla de cdigos correspondiente a cada letra de la palabra

MATEMATICAMENTE

Ejercicio 2
Dados los siguientes nodos, verificar si se puede construir un arbol tipo heap-min y un
rbol tipo heap-max

1
2

1
0

2
0

5
0

6
4

4
3

3
4

5
4

6
7

2
3

Ejercicio: Arboles ABB


1.Construir un algoritmo que permita insertar nodos en un
rbol ABB
Considerar si el rbol esta vaco
Dado un nodo, registrarlo en el lugar adecuado del rbol
No permitir ingresar un nodo que ya exista
Permita hacer el recorrido Pre, In y Post Orden. Mostrar los
valores de los nodos segn el tipo de recorrido

2.Construir un algoritmo para obtener la altura del rbol y


el peso del rbol
3.Implementar la opcin de eliminar un nodo en el rbol
creado en el punto 1 que permita realizar lo siguiente.
Eliminar un nodo hoja
Eliminar un nodo con un hijo

Das könnte Ihnen auch gefallen