You are on page 1of 13

ESTRUCTURA DE DATOS GRUPO: 301305_44 TRABAJO COLABORATIVO 3

PRESENTADO POR: JAIRO EMILIO ARRIETA MEJIA CODIGO: 1082066149 EDWIN FABIAN CASTRO QUINTERO CODIGO: 1081411028

TUTOR: HERMES MOSQUERA

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BSICAS TECNOLOGA E INGENIERA ECBTI 2013

INTRODUCCION En el presente trabajo colaborativo se evidencia el trabajo con los arboles binarios de bsqueda (ABB), su clasificacin y los recorridos que hace como lo son en inorden, preorden y postorden.

OBJETIVO Conceptualizar acerca de los rboles binarios de bsqueda (ABB).

ARBOLES BINARIOS

Los arboles ordenados de grado dos se les conoce como arboles binarios ya que cada nodo del rbol no tendr ms de dos descendientes directos. Las aplicaciones de los arboles binarios son muy variadas ya que se les puede utilizar para representar una estructura en la cual es posible tomar decisiones con dos opciones en distintos puntos.

REPRESENTACION EN MEMORIA

Hay dos formas tradicionales de representar un rbol binario en memoria:

Por medio de datos tipo punteros tambin conocidos como variables dinmicas o listas. Por medio de arreglos.

Sin embargo la ms utilizada es la primera, puesto que es la ms natural para tratar este tipo de estructuras. .

Los nodos del rbol binario sern representados como registros que contendrn como mnimo tres campos. En un campo se almacenar la informacin del nodo. Los dos restantes se utilizarn para apuntar al subarbol izquierdo y derecho del subarbol en cuestin.

Clasificacin de Aboles Binarios

Existen cuatro tipos de rbol binario:.

Arbol Binario Distinto. Arbol Binario Similares. Arbol Binario Equivalentes. Arbol Binario Completos.

Recorrido de un rbol Binario Hay tres manera de recorrer un rbol : en inorden, preorden y postorden. Cada una de ellas tiene una secuencia distinta para analizar el rbol como se puede ver a continuacin:

INORDEN

Recorrer el subarbol izquierdo en inorden. Examinar la raz. Recorrer el subarbol derecho en inorden.

PREORDEN

Examinar la raz. Recorrer el subarbol izquierdo en preorden. recorrer el subarbol derecho en preorden.

POSTORDEN

Recorrer el subarbol izquierdo en postorden. Recorrer el subarbol derecho en postorden. Examinar la raz.

rboles binarios de bsqueda (ABB)

Se trata de rboles de orden 2 en los que se cumple que para cada nodo, el valor de la clave de la raz del subrbol izquierdo es menor que el valor de la clave del nodo y que el valor de la clave raz del subrbol derecho es mayor que el valor de la clave del nodo.

Operaciones bsicas con rboles Salvo que trabajemos con rboles especiales, como los que veremos ms adelante, las inserciones sern siempre en punteros de nodos hoja o en punteros libres de nodos rama. Con estas estructuras no es tan fcil generalizar, ya que existen muchas variedades de rboles.

De nuevo tenemos casi el mismo repertorio de operaciones de las que disponamos con las listas:

Aadir o insertar elementos. Buscar o localizar elementos. Borrar elementos. Moverse a travs del rbol.

Recorrer el rbol completo.

Los algoritmos de insercin y borrado dependen en gran medida del tipo de rbol que estemos implementando, de modo que por ahora los pasaremos por alto y nos centraremos ms en el modo de recorrer rboles.

Recorridos por rboles:

El modo evidente de moverse a travs de las ramas de un rbol es siguiendo los punteros, del mismo modo en que nos movamos a travs de las listas. Esos recorridos dependen en gran medida del tipo y propsito del rbol, pero hay ciertos recorridos que usaremos frecuentemente. Se trata de aquellos recorridos que incluyen todo el rbol. Hay tres formas de recorrer un rbol completo, y las tres se suelen implementar mediante recursividad. En los tres casos se sigue siempre a partir de cada nodo todas las ramas una por una. Supongamos que tenemos un rbol de orden tres, y queremos recorrerlo por completo. Partiremos del nodo raz:

RecorrerArbol(raiz)

La funcin RecorrerArbol, aplicando recursividad, ser tan sencilla como invocar de nuevo a la funcin RecorrerArbol para cada una de las ramas:

void RecorrerArbol(Arbol a) { if(a == NULL) return; RecorrerArbol(a->rama[0]);

RecorrerArbol(a->rama[1]); RecorrerArbol(a->rama[2]); }

Lo que diferencia los distintos mtodos de recorrer el rbol no es el sistema de hacerlo, sino el momento que elegimos para procesar el valor de cada nodo con relacin a los recorridos de cada una de las ramas.

Los tres tipos son:

Pre-orden: En este tipo de recorrido, el valor del nodo se procesa antes de recorrer las ramas:

void PreOrden(Arbol a) { if(a == NULL) return; Procesar(dato);

RecorrerArbol(a->rama[0]); RecorrerArbol(a->rama[1]); RecorrerArbol(a->rama[2]); }

In-orden:

En este tipo de recorrido, el valor del nodo se procesa despus de recorrer la primera rama y antes de recorrer la ltima. Esto tiene ms sentido en el caso de rboles binarios, y tambin cuando existen ORDEN-1 datos, en cuyo caso procesaremos cada dato entre el recorrido de cada dos ramas (este es el caso de los rboles-b):

void InOrden(Arbol a) { if(a == NULL) return; RecorrerArbol(a->rama[0]); Procesar(dato); RecorrerArbol(a->rama[1]); RecorrerArbol(a->rama[2]); }

Post-orden:

En este tipo de recorrido, el valor del nodo se procesa despus de recorrer todas las ramas:

void PostOrden(Arbol a) { if(a == NULL) return; RecorrerArbol(a->rama[0]); RecorrerArbol(a->rama[1]); RecorrerArbol(a->rama[2]); Procesar(dato); }

Eliminar nodos en un rbol:

El proceso general es muy sencillo en este caso, pero con una importante limitacin, slo podemos borrar nodos hoja, el proceso sera el siguiente:

Buscar el nodo padre del que queremos eliminar. Buscar el puntero del nodo padre que apunta al nodo que queremos borrar. Liberar el nodo. padre->nodo[i] = NULL;. Cuando el nodo a borrar no sea un nodo hoja, diremos que hacemos una "poda", y en ese caso eliminaremos el rbol cuya raz es el nodo a borrar. Se trata de un procedimiento recursivo, aplicamos el recorrido PostOrden, y el proceso ser borrar el nodo. El procedimiento es similar al de borrado de un nodo: Buscar el nodo padre del que queremos eliminar. Buscar el puntero del nodo padre que apunta al nodo que queremos borrar. Podar el rbol cuyo padre es nodo. padre->nodo[i] = NULL;.

En el rbol del ejemplo, para podar la rama 'B', recorreremos el subrbol 'B' en postorden, eliminando cada nodo cuando se procese, de este modo no perdemos los punteros a las ramas apuntadas por cada nodo, ya que esas ramas se borrarn antes de eliminar el nodo.

rboles ordenados:

A partir del siguiente captulo slo hablaremos de rboles ordenados, ya que son los que tienen ms inters desde el punto de vista de TAD, y los que tienen ms aplicaciones genricas.

Un rbol ordenado, en general, es aquel a partir del cual se puede obtener una secuencia ordenada siguiendo uno de los recorridos posibles del rbol: inorden, preorden o postorden.

En estos rboles es importante que la secuencia se mantenga ordenada aunque se aadan o se eliminen nodos.

Existen varios tipos de rboles ordenados, que veremos a continuacin: rboles binarios de bsqueda (ABB): son rboles de orden 2 que mantienen una secuencia ordenada si se recorren en inorden. rboles AVL: son rboles binarios de bsqueda equilibrados, es decir, los niveles de cada rama para cualquier nodo no difieren en ms de 1. rboles perfectamente equilibrados: son rboles binarios de bsqueda en los que el nmero de nodos de cada rama para cualquier nodo no difieren en ms de 1. Son por lo tanto rboles AVL tambin. Arboles 2-3: son rboles de orden 3, que contienen dos claves en cada nodo y que estn tambin equilibrados. Tambin generan secuencias ordenadas al recorrerlos en inorden.

Arboles-B: caso general de rboles 2-3, que para un orden M, contienen M-1 claves.
Captura de Pantallas Men principal

Inorden = [5 , 8 , 12 , 13 , 14 , 16 , 19 , 25 , 63 , 71]

CONCLUSIN Comprendimos mucho acerca de los arboles binarios de bsqueda, trabajando los diferentes aspectos, encontramos mayor conocimiento y el aprendizaje se bas en el curso. Nos deja una forma clara para desempear graficas de rboles y diferentes pautas.

Bibliografa

Mdulo de estructura de datos Gua de actividades

You might also like