Sunteți pe pagina 1din 42

Algoritmos y Estructuras de Datos

UNLA junio 2012

Introduccin
Hasta el momento vimos las siguientes estructuras de
datos:
Listas

Pilas

Colas

Problema
Cmo representaramos la siguiente estructura?
C
Usuarios

Admin

Damian

Windows

System

Programas

Java

Office

Arboles
Un rbol (tree) es un T.D.A. que consta de un conjunto
finito T de nodos y una relacin R (paternidad) entre los
nodos tal que:
Hay un nodo, especialmente designado, llamado la raz
del rbol T.
Los nodos restantes, excluyendo la raz, son
particionados en m (m 0) conjuntos disjuntos T1, T2,
..., Tm, cada uno de los cuales es, a su vez, un rbol,
llamado subrbol de la raz del rbol T.
A los nodos que no son races de otros subrboles se les
denomina hojas del rbol T, o sea, no tienen sucesores
o hijos.

Definiciones
Padre de un nodo al nodo raz del subrbol ms pequeo
que contiene a dicho nodo y en el cual l no es raz.
Hijo de un nodo al (los) nodo(s) raz(ces) de uno de sus
subrboles.
Predecesor de un nodo al nodo que le antecede en un
recorrido del rbol.
Hermano de un nodo a otro nodo hijo de su padre.

Aclaraciones
Si el conjunto finito T de nodos del rbol es vaco, entonces

se trata de un rbol vaco.


En esta estructura existe slo un nodo sin padre, que es la

raz del rbol.


Todo nodo, a excepcin del nodo raz, tiene uno y slo un

padre.
Los subrboles de un nodo son llamados hijos.

Ejemplos

Padre de C:

Padre de E:

Padre de G

Padre de A:

NO

Hijos de A:

Hijos de C:

Hijos de F:

NO

Aclaracin
Para todo nodo k, distinto de la raz, existe una
nica secuencia de la forma:
k0, k1, k2, k3, ..., kn, donde k0=raz y kn=k

Con n >= 1, donde ki es el sucesor de ki-1, para 1 <= i <= n, o sea, cada
nodo ki de la secuencia es la raz de otro subrbol.

Ejemplo
A

Secuencias
C

de A a G: A-C-G
de A a E: A-B-E

de B a F: No existe

Definiciones
Grado de un nodo: cantidad de hijos de un nodo.
Grado de un rbol: el mayor de los grados de todos sus
nodos.
Nodo hoja: es un nodo sin hijos, es decir, con grado = 0.
Nodo rama: es un nodo que tiene hijos, o sea, a la raz
de un subrbol (grado > 0).

Ejemplo

Grado

de A:

de E:

de G:

de J:

Grado del rbol:


K

Nodos hojas: D, H, I, J, F, K
Nodos ramas: A, B, C, E, G

Definiciones
Nivel de un nodo al nivel de su padre ms uno. Por
definicin, la raz del rbol tiene nivel 0. Esta
definicin es recursiva.
La profundidad de un rbol es el mximo nivel de
cualquier hoja en el rbol. Esto es igual a la longitud de
la trayectoria ms larga de la raz a cualquier hoja.

Ejemplo
Nivel

de A:

de E:

de B:

de I:

de G:

Definicin
rbol completo de nivel n 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

No completo

completo

No completo

Definicin
rbol lleno: es un rbol con todos sus niveles llenos.

Definicin
Una floresta es una coleccin de dos o ms rboles
disjuntos.
Aclaraciones:
Disjuntos significa que no hay nodos en comn entre
dos rboles cualesquiera de la misma.
De un rbol se obtiene una floresta al quitarle la raz,
si tiene dos hijos o ms.
De una floresta se obtiene un rbol al aadir un nodo
que sea raz de todos los rboles que la conforman.

Ejemplo
B

B
C

D
D

Es una floresta

J
NO es una floresta

Definicin
rbol ordenado: todo rbol para el que se considera el
orden relativo de los sucesores o subrboles de
cualquier nodo.
Es decir, en un rbol ordenado se habla de primero,
segundo o ltimo hijo de un nodo en particular. El
primer hijo de un nodo de un rbol ordenado es
denominado el hijo mayor de ese nodo y el ltimo hijo
es denominado el menor.
El rbol es ordenado si al intercambiar el orden
relativo de los subrboles de un nodo, representa una
situacin semnticamente diferente.

Definicin
rbol orientado a un rbol para el cual no interesa el orden
relativo de los sucesores o subrboles de cualquier nodo, ya
que slo se tiene en cuenta la orientacin de los nodos.
Ejemplo:
La estructura organizativa de una empresa, donde no es
importante el orden de los subdirectores a la hora de
representarlos en el rbol.
En la solucin de problemas informticos, los ms utilizados
son los rboles ordenados.

Arbol Binario
Un rbol binario (en ingls binary tree) es un rbol
ordenado de grado 2.
Aclaraciones:
Grado 2 significa que cada nodo tiene como mximo
dos hijos, o sea, dos subrboles.
Al ser ordenado el rbol, importa el orden de los
subrboles, es decir, que ser necesario especificar de
cada nodo cul es el hijo izquierdo y cul el hijo
derecho.

Ejemplo
10

12

11

13

Implementacin
Cada nodo del rbol binario contiene:
Una referencia a su informacin.
Un puntero a su hijo izquierdo.
Un puntero a su hijo derecho.
Informacin

Hijo Izquierdo

Hijo Derecho

Recorridos de un rbol
Los recorridos se clasifican de acuerdo al momento en que se
visita la raz del rbol y los subrboles izquierdo y derecho.
Existen tres recorridos:
Recorrido en Preorden
Recorrido en orden simtrico o inorden
Recorrido en orden final o Postorden

Recorrido en PreOrden
1. Visitar la raz.
2. Recorrer subrbol izquierdo en preorden.
3. Recorrer subrbol derecho en preorden.
Ejemplo Uso: Se va a utilizar siempre que queramos
comprobar alguna propiedad del rbol ( p.ej.: localizar
elementos )

Recorrido en PreOrden
Recorrido:
1. Raz.
2. Subrbol izquierdo en preorden.
3. Subrbol derecho en preorden.
A

* Las letras en los nodos


identifican al nodo y no al valor
que contiene.

Recorrido InOrden (simtrico)


1. Recorrer subrbol izquierdo en simtrico.
2. Visitar la raz.
3. Recorrer subrbol derecho en simtrico.
Ejemplo Uso: Se utiliza siempre que nos pidan algo
relativo a la posicin relativa de las claves o algo que
tenga que ver con el orden de las claves ( p.ej.: Cul es
la 3 clave?)

Recorrido InOrden
Recorrido
1. Subrbol izquierdo en simtrico.
2. Raz.
3. Subrbol derecho en simtrico.

* Las letras en los nodos


identifican al nodo y no al valor
que contiene.

Recorrido PostOrden
1. Recorrer subrbol izquierdo en orden final.
2. Recorrer subrbol derecho en orden final.
3. Visitar la raz.
4. Ejemplo Uso: Su principal utilidad consiste en liberar

la memoria ocupada por un rbol.

Recorrido PostOrden
Recorrido
1. Subrbol izquierdo en orden final.
2. Subrbol derecho en orden final.
3. Raz.

* Las letras en los nodos


identifican al nodo y no al valor
que contiene.

Arbol de bsqueda
Permiten realizar operaciones (recorridos, bsqueda de un
elemento, etc) de forma ms eficiente.
Hay dos momentos para la manipulacin de un rbol:
La construccin del rbol.
El recorrido del rbol para realizar las operaciones
requeridas segn el problema a resolver.

Existen dos tipos especiales de rboles:


rboles lexicogrficos.
rboles hilvanados.

Arbol Lexicogrfico
Un rbol lexicogrfico es un rbol binario que,
recorrido en orden simtrico, permite obtener la
informacin de los nodos en algn criterio de
ordenamiento.
La tcnica de construccin de un rbol lexicogrfico
consiste en un proceso recursivo que va colocando los
nodos en el subrbol izquierdo o derecho del nodo raz,
segn sea el criterio de ordenamiento deseado
(ascendente o descendente).

Arbol Lexicogrfico
Siguiendo un ordenamiento ascendente:
1. Se compara el nodo que se quiere insertar con la raz

del rbol.
Si es menor, se coloca en el subrbol izquierdo
siguiendo el mismo proceso.
Si es mayor, se coloca en el subrbol derecho siguiendo
el mismo proceso.

Ejemplo
rbol lexicogrfico con ordenamiento ascendente.
Lista: 2, 7, 1, 4, 5

Lista: 4, 7, 2, 1, 5

2
4
7

2
4
1

5
Si se recorre en orden simtrico, se obtiene la informacin de sus nodos en orden
ascendente: 1, 2, 4, 5, 7 con independencia del orden de la lista original.

Situacin
El recorrido de rboles con programas recursivos
resulta costoso ya que implica un gasto adicional de
memoria y tiempo de ejecucin. Para rboles muy
grandes se puede desbordar el stack del sistema
relativamente pronto.
rbol hilvanado

rbol Hilvanado
Un rbol hilvanado (o rbol entrelazado) es un
rbol binario en el que cada hijo izquierdo de valor
nulo es sustituido por un enlace o hilvn al nodo que le
antecede en orden simtrico (excepto el primer nodo
en orden simtrico) y cada hijo derecho de valor nulo
es sustituido por un enlace o hilvn al nodo que le
sigue en el recorrido en orden simtrico (excepto el
ltimo nodo en orden simtrico).

rbol Hilvanado
Ahora, un recorrido en orden simtrico se puede
implementar sin necesidad de recursin.
Sin embargo, se requiere que los nodos tengan en su
estructura algn atributo que permita saber cundo un
enlace es real y cundo se trata de un hilvn. En este caso
es necesario un atributo para cada hijo.

rbol Hilvanado
Cada nodo del rbol hilvanado contiene:
Una referencia a su informacin.
Un apuntador a su hijo izquierdo.
Indicador Izquierdo (Verdadero o Falso).
Un apuntador a su hijo derecho.
Indicador Derecho (Verdadero o Falso).
Informacin

Indicador Izquierdo (T)


Hijo Izquierdo

Indicador Derecho (T)


Hijo Derecho

Recorrido

Recorrido Simtrico:

5
T

1, 3, 4, 5, 6, 8, 9

3
T

NULL

1
T

4
F

6
F

9
F

NULL

rbol Balanceado
La bsqueda en un rbol lexicogrfico puede convertirse
en una bsqueda secuencial. Esto sucede porque el rbol
no est balanceado, es decir los nodos no estn
distribuidos uniformemente y se han insertado todos los
nodos en profundidad.
Esto podra ser salvado si se utilizara un rbol
balanceado que al insertar toma en cuenta la cantidad de
niveles del rbol y distribuye los nodos uniformemente.

Arbol AVL
Un rbol AVL es un rbol binario de bsqueda en el que
las alturas de los subrboles izquierdo y derecho de
cualquier nodo se diferencian a lo sumo en uno.
La bsqueda es similar a como se hace en un rbol
binario de bsqueda (lexicogrficos), pero la insercin y
la eliminacin deben considerar la propiedad del
balance.

Dudas, consultas, sugerencias?

S-ar putea să vă placă și