You are on page 1of 13

TRABAJO FINAL

Grupo: 3

Tema: Arboles binarios y grafos

Integrantes

Andrs castro: 2016-0596


Junior Snchez: 2016-2549
Esmerlin rivera : 2016-4255
Alberto Olivares: 2015-5149

DOCENTE FECHA
LUIS MALDONADO 2017-27-07
DESARROLLO

Definicin de teora de grafos


En teora de grafos, se usa la siguiente definicin: Un rbol binario es un
grafo conexo, acclico y no dirigido tal que el grado de cada vrtice no es
mayor a 3. De esta forma solo existe un camino entre un par de nodos.
Un rbol binario con enraizado es como un grafo que tiene uno de sus
vrtices, llamado raz, de grado no mayor a 2. Con la raz escogida, cada
vrtice tendr un nico padre, y nunca ms de dos hijos. Si rehusamos el
requerimiento de la conectividad, permitiendo mltiples componentes
conectados en el grafo, llamaremos a esta ltima estructura un bosque'.

Los rboles a diferencia de las listas son una estructura de datos de no


lineal, atendiendo ms a una estructura de tipo jerrquico. Los rboles son,
sin duda, una de las estructuras de datos no lineales, empleadas en
informtica, tanto para resolver problemas de hardware como de software.
Los rboles de directorios son organizaciones bastante empleadas por
cualquier usuario o programador de una computadora. De igual manera
cumplen un buen papel en la toma de decisiones, valido como rbol de
decisiones.
Los rboles genealgicos y los organigramas son ejemplos comunes.
Entre otras aplicaciones, los rboles se emplean para analizar circuitos
elctricos y para representar la estructura de frmulas matemticas, as
como para organizar la informacin de bases de datos, para representar la
estructura sintctica de un programa fuente en compiladores y para la
toma de decisiones.
Tipos de rboles binarios
Un rbol binario es un rbol en el que ningn nodo puede tener ms de
dos subrboles. En un rbol binario cada nodo puede tener cero, uno o
dos hijos (subrboles). Se conoce el nodo de la izquierda como hijo
izquierdo y el nodo de la derecha como hijo derecho.
Existen tipos de rboles binarios que suelen usarse para fines especficos,
como:

rbol binario de bsqueda


rbol de Fibonacci
Implementacin en C
Un rbol binario puede declararse de varias maneras. Algunas de ellas
son:
Estructura con manejo de memoria dinmica, siendo el puntero que apunta
al rbol de tipo tArbol:
typedef struct nodo {

int clave;

struct nodo *izdo, *dcho;

}Nodo;

Estructura con arreglo indexado:

typedef struct tArbol

int clave;

tArbol hIzquierdo, hDerecho;

} tArbol;

tArbol rbol[NUMERO_DE_NODOS];

En el caso de un rbol binario casi-completo (o un rbol completo), puede


utilizarse un sencillo arreglo de enteros con tantas posiciones como nodos
deba tener el rbol. La informacin de la ubicacin del nodo en el rbol es
implcita a cada posicin del arreglo. As, si un nodo est en la posicin i,
sus hijos se encuentran en las posiciones 2i+1 y 2i+2, mientras que su
padre (si tiene), se encuentra en la posicin truncamiento((i-1)/2)
(suponiendo que la raz est en la posicin cero). Este mtodo se beneficia
de un almacenamiento ms compacto y una mejor localidad de referencia,
particularmente durante un recorrido en preorden. La estructura para este
caso sera por tanto:

int rbol[NUMERO_DE_NODOS];

Recorridos sobre rboles binarios

Recorridos

Comparado a las estructuras de datos lineales como las listas


enlazadas y arreglos unidimensionales, que tienen un mtodo cannico de
recorrido, las estructuras arborescentes pueden ser recorridas de muchas
maneras diferentes. Comenzando en la raz de un rbol binario, hay tres
pasos principales que pueden ser realizados y el orden en la cual son
realizados define el tipo de recorrido. Estos pasos (en ningn orden
particular) son: ejecucin de una accin en el nodo actual (referido como
visitando el nodo), recorriendo al nodo hijo de la izquierda, y recorriendo
al nodo hijo de la derecha. As el proceso ms fcilmente descrito a travs
de la recursin.
Los nombres dados para un estilo particular de recorrido vienen de la
posicin del elemento de raz con respecto a los nodos izquierdo y
derecho. Imagine que los nodos izquierdo y derecho son constantes en
espacio, entonces el nodo raz pudiera colocarse a la izquierda del nodo
izquierdo (pre-orden), entre el nodo izquierdo y derecho (in-orden), o a la
derecha del nodo derecho (post-orden).
Con el fin de ilustrar, se asume que los nodos izquierdos tienen siempre
prioridad sobre los nodos derechos. Este ordenamiento puede ser invertido
mientras el mismo orden sea asumido para todos los mtodos de
recorrido.
Recorridos en profundidad

El mtodo de este recorrido es tratar de encontrar de la cabecera a la raz


en nodo de unidad binaria. Ahora pasamos a ver la implementacin de los
distintos recorridos:

Recorrido en preorden

Recorrer un rbol en preorden consiste en primer lugar, examinar el dato


del nodo raz, posteriormente se recorrer el subrbol izquierdo en preorden
y finalmente se recorre el subrbol derecho en preorden. Esto significa
que para cada subrbol se debe conservar el recorrido en preorden,
primero la raz, luego la parte izquierda y posteriormente la parte derecha.
Imagen 3. Representacin grfica del rbol binario y su recorrido en
preorden

Veamos como se realiza el recorrido paso a paso segn la grfica del rbol
de la imagen 3:
El recorrido inicia con el subrbol izquierdo, el primer nodo a visitar es la
raz que es el nodo 10, luego se visita el subrbol izquierdo con el nodo
5, posteriormente el 3, luego el nodo 1, sigue con el nodo 4, pasamos al
nodo 7 y luego el 9.
Continuamos con el recorrido del subrbol derecho en preorden, con
la visita del nodo 15, luego el 14, se contina con el 17, se visita el
16 y se finaliza con la visita del nodo 20.
El resultado completo del recorrido en preorden para el rbol de la imagen
es: 10 5 3 1 4 7 9 15 14 17 -16 20, Tal como se
muestra en la imagen 3.

Recorrido en postorden

Recorrer un rbol en Postorden consiste en primer lugar en recorrer el


subrbol izquierdo en Postorden, luego serecorre el subrbol derecho
en Postorden y finalmente se visita el nodo raz. Esto significa que para
cada subrbol se debe conservar el recorrido en Postorden, es decir,
primero se visita la parte izquierda, luego la parte derecha y por ltimo la
raz.
Imagen 5. Representacin grafica del rbol binario y su recorrido en
postorden

Veamos como se realiza el recorrido paso a paso segn la grfica del rbol
de la imagen 5.
El recorrido inicia con el subrbol izquierdo, el primer nodo a visitar es el 3
luego se visita el 7 y posteriormente el 5 que es la raz, con esto se
garantiza que el recorrido del subrbol izquierdo se hizo en Postorden.
Finalizado el recorrido del subrbol izquierdo se inicia la visita al subrbol
derecho en Postorden, es decir, se visita el 11 luego el 15 y se finaliza con
la visita del nodo 12 que sera la raz de este subrbol.
Solo queda recorrer la raz del rbol que para este caso es el nmero 10.
El resultado completo del recorrido en Postorden para el rbol de la
imagen es:
3 7 5 11 15 12 10 Tal como se muestra en la imagen.
Recorrido en inorden

Recorrer un rbol en Inorden consiste en primer lugar en recorrer el


subrbol izquierdo en Inorden, luego se examina el dato del nodo raz, y
finalmente se recorre el subrbol derecho en Inorden. Esto significa que
para cada subrbol se debe conservar el recorrido en Inorden, es decir,
primero se visita la parte izquierda, luego la raz y posteriormente la parte
derecha.
Imagen 4. Representacin grfica del rbol binario y su recorrido en
Inorden

Veamos cmo se realiza el recorrido paso a paso segn la grfica del rbol
de la imagen 4:
El recorrido inicia con el subrbol izquierdo, el primer nodo a visitar es el 3
luego se visita el 5 y posteriormente el 7, con esto se garantiza que el
recorrido del subrbol izquierdo se hizo en Inorden.
Finalizado el recorrido del subrbol izquierdo se visita el nodo de la raz,
que para este caso es el nmero 10.
Solo queda recorrer el subrbol derecho en Inorden, es decir se visita el
11 luego el 12 y se finaliza con la visita del nodo 15
El resultado completo del recorrido en Inorden para el rbol de la imagen
es:3 5 7 10 11 12 15, Tal como se muestra en la imagen.
rbol binario de bsqueda (ABB)

Los rboles binarios de bsqueda, son un tipo especial de rbol binario


cuya caracterstica radica en la forma ordenada de insertar sus elementos,
facilitando as la bsqueda de un nodo en particular. Para puntualizar a un
ms, se tratarn los rboles binarios de bsqueda, en los que se tiene
preestablecido un cierto orden, que seguramente ayudar a encontrar un
cierto dato dentro de un rbol con mucha rapidez.
La pregunta sera;cmo es este orden prefijado o preestablecido? La
respuesta es sencilla y entenderlo es a un ms, Solo se debe cumplir la
condicin que para cada nodo se tiene que:
la rama de la izquierda contendr elementos menores.
la rama de la derecha contendr elementos mayores.
Un ejemplo sera la forma ms sencilla de explicarlo y
comprenderlo. Parimos de la siguiente grfica del rbol binario de
Bsqueda.
Imagen 6. Grfica de un rbol binario de bsqueda

Partiendo de la grfica del rbol de la imagen 6 realizaremos los tres


recorridos, conservando el orden correspondiente para cada uno.
Recorrido en preorden: 20 13 9 6 10 18 14 17 32 26 24
29 36 34 40
Recorrido en inorden: 6 9 10 13 14 18 17 20 24 26 29
32 34 36 40
Recorrido en postorden: 6 10 9 14 17 18 13 24 29 26 34
40 36 32 20

Recorridos en amplitud (o por niveles)


En este caso el recorrido se realiza en orden por los distintos niveles del
rbol. As, se comenzara tratando el nivel 1, que solo contiene el nodo
raz, seguidamente el nivel 2, el 3 y as sucesivamente. En el rbol de la
figura el recorrido en amplitud sera: 2, 7, 5, 2, 6, 9, 5, 11 y 4.
Al contrario que en los mtodos de recorrido en profundidad, el recorrido
por niveles no es de naturaleza recursiva. Por ello, se debe utilizar una
cola para recordar los subrboles izquierdos y derecho de cada nodo.
El esquema algoritmo para implementar un recorrido por niveles es
exactamente el mismo que el utilizado en la versin iterativa del recorrido
en preorden pero cambiando la estructura de datos que almacena los
nodos por una cola.
Implementacin en C:
Creacin de rboles a partir de los recorridos
Para poder dibujar un rbol binario sobre la base de los recorridos, se
necesitan por lo menos dos de los recorridos de profundidad (en caso de
que no se repitan los nodos, ya que si se repiten los nodos es
recomendable tener los tres recorridos), ya sean inorden y preorden o
inorden y postorden, la nica diferencia entre usar el recorrido en preorden
o postorden es que en preorden se usa el primer nodo para encontrar la
raz y en postorden se usa el ltimo nodo.
El mtodo consiste en ir dividiendo los recorridos del rbol en pequeos
subrboles, se va encontrando la raz con el preorden o postorden y se
divide en dos subrboles basndonos en el recorrido en inorden. En el
caso de que los nodos se repitan es conveniente tener los 3 recorridos
para identificar ms fcilmente cul de los nodos es la raz actual.
Para el rbol de la figura corresponden los siguientes recorridos:

Preorden
Inorden

Postorden

Para encontrar la raz es necesario tener el recorrido preorden o


postorden, ya que la raz es el primer nodo o el ltimo nodo
respectivamente. En este caso la raz es el .
Una vez encontrada la raz, es necesario saber su posicin en el recorrido
inorden, del paso anterior se tiene el nodo , pero existen 2 nodos con
ese valor, el primero y el de en medio. Si el primer dos es la raz, entonces
no existe ninguna rama del lado izquierdo, en ese caso la siguiente raz de
acuerdo con el recorrido en postorden es y de acuerdo con preorden
es , lo cual es una incongruencia, de esa forma sabemos que el
otro es la raz.
Entonces marcamos la raz en el recorrido inorden:

Preorden

Inorden

Postorden

El recorrido inorden, es un recorrido de los rboles binarios en los que se


empieza desde el nodo que se encuentra ms a la izquierda de todos,
sigue con la raz y termina con los nodos del lado derecho, entonces, como
en el recorrido inorden ya encontramos la raz, la parte izquierda
representa el subrbol izquierdo y la parte derecha representa el subrbol
derecho.

En los recorridos tenemos 5 nodos a la izquierda del y a la derecha se


encuentran 3 valores, entonces podemos crear los recorridos para el
subrbol izquierdo y el subrbol derecho
Subrbol izquierdo Subrbol derecho

Preorden Preorden

Inorden Inorden

Postorden Postorden

Se sigue repitiendo el proceso hasta encontrar todos los nodos del rbol,
en este punto la siguiente raz izquierda es l y la raz derecha l .
Cuando se llegan a nodos en los que nicamente cuentan con una rama
es necesario saber que rama es la derecha y cul es la izquierda (para
algunos rboles con balanceo como los AVL), por ejemplo siguiendo la
rama de la derecha partiendo de que l es la raz el recorrido inorden
es entonces el siguiente nodo va a la derecha, no hay nodo a la
izquierda, despus, los recorridos para el subrbol son:

Preorden

Inorden

Postorden
Finalmente el siguiente nodo se coloca a la izquierda del .
Este mtodo es 100% efectivo cuando no existen nodos repetidos, cuando
los nodos se repiten la complejidad aumenta para poder descubrir cul es
el nodo raz en el recorrido inorden.
Mtodos para almacenar rboles Binarios

Los rboles binarios pueden ser construidos a partir de lenguajes de


programacin de varias formas. En un lenguaje con registros y referencias,
los rboles binarios son construidos tpicamente con una estructura de
nodos y punteros en la cual se almacenan datos, cada uno de estos nodos
tiene una referencia o puntero a un nodo izquierdo y a un nodo derecho
denominados hijos. En ocasiones, tambin contiene un puntero a un nico
nodo. Si un nodo tiene menos de dos hijos, algunos de los punteros de los
hijos pueden ser definidos como nulos para indicar que no dispone de
dicho nodo. En la figura adjunta se puede observar la estructura de dicha
implementacin.
Los rboles binarios tambin pueden ser almacenados como
una estructura de datos implcita en vectores, y si el rbol es un rbol
binario completo, este mtodo no desaprovecha el espacio en memoria.
Tomaremos como notacin la siguiente: si un nodo tiene un ndice i, sus
hijos se encuentran en ndices 2i + 1 y 2i + 2, mientras que sus padres (si
los tiene) se encuentra en el ndice (partiendo de que la raz tenga
ndice cero). Este mtodo tiene como ventajas el tener almacenados los
datos de forma ms compacta y por tener una forma ms rpida y eficiente
de localizar los datos en particular durante un preoden transversal. Sin
embargo, desperdicia mucho espacio en memoria.

Codificacin de rboles n-arios como rboles binarios


Hay un mapeo uno a uno entre los rboles generales y rboles binarios, el
cual en particular es usado en Lisp para representar rboles generales
como rboles binarios. Cada nodo N ordenado en el rbol corresponde a
un nodo N' en el rbol binario; el hijo de la izquierda de N es el nodo
correspondiente al primer hijo de N, y el hijo derecho de N' es el nodo
correspondiente al siguiente hermano de N, es decir, el prximo nodo en
orden entre los hijos de los padres de N.
Esta representacin como rbol binario de un rbol general, se conoce a
veces como un rbol binario primer hijo hermano, o un rbol doblemente
encadenado.
Una manera de pensar acerca de esto es que los hijos de cada nodo estn
en una lista enlazada, encadenados junto con el campo derecho, y el nodo
solo tiene un puntero al comienzo o la cabeza de esta lista, a travs de su
campo izquierdo.
Por ejemplo, en el rbol de la izquierda, la A tiene 6 hijos (B, C, D, E, F, G).
Puede ser convertido en el rbol binario de la derecha:

El rbol binario puede ser pensado como el rbol original inclinado hacia
los lados, con los bordes negros izquierdos representando el primer hijo y
los azules representado los siguientes hermanos.
Las hojas del rbol de la izquierda seran escritas en Lisp como:

(((N O) I J) C D ((P) (Q)) F (M))

You might also like