You are on page 1of 12

NOMBRE: RAFAEL ULISES AYALA LOPEZ PROFESOR: BALLESTEROS BARRADAS LUIS BERNARDO

MATERIA: ESTRUCTURA DE DATOS SEMESTRE: TERCERO

TEMA: ARBOLES BINARIOS

INDICE
INTRODUCCION.pag2

CONCEPTO DE ARBOL.pag3

CLASIFICACION DE ARBOLES..pag4 RBOLES BINARIOS.pag4 RBOLES ROJO-NEGRO..pag4 RBOL AA ...pag4 RBOLES MULTICAMINO..pag5 RBOLES B..pag5 RBOL-B+ pag5 RBOL-B*.pag6

OPERACIONES BASICAS SOBRE ARBOLES BINARIOSpag7 -CREACION..pag7 - INSERCIONpag7 - BORRADO..pag8 -ARBOLES BALANCEADOS....pag10

CONCLUSION.pag11 BIBLIOGRAFIA..pag11

INTRODUCCION

Las estructuras dinmicas nos permiten crear estructuras de datos que se adapten a las necesidades reales a las que suelen enfrentarse nuestros programas. Pero no slo eso, como veremos, tambin nos permitirn crear estructuras de datos muy flexibles, ya sea en cuanto al orden, la estructura interna o las relaciones entre los elementos que las componen. Las estructuras de datos estn compuestas de otras pequeas estructuras a las que llamaremos nodos o elementos, que agrupan los datos con los que trabajar nuestro programa y adems uno o ms punteros autoreferenciales, es decir, punteros a objetos del mismo tipo nodo. Arboles: cada elemento dispone de dos o ms punteros, pero las referencias nunca son a elementos anteriores, de modo que la estructura se ramifica y crece igual que un rbol.

CONCEPTO DE ARBOL

Un rbol es una estructura de datos ampliamente usada que imita la forma de un rbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el rbol y puede tener cero o ms nodos hijos conectados a l. Se dice que un nodo a es padre de un nodo b si existe un enlace desde a hasta b (en ese caso, tambin decimos que b es hijo de a). Slo puede haber un nico nodo sin padres, que llamaremos raz. Un nodo que no tiene hijos se conoce como hoja. Los dems nodos (tienen padre y uno o varios hijos) se les conoce como rama.

CLASIFICACIN DE ARBOLES
y

rboles Binarios

Clasificacion de arboles binarios: 1.-arbol binario distinto:Se dice que un arbol es distinto cuando su estructura grafica es diferente. 2.-arbol binario similiar.- Se dice que un arbol es similar cuando su estructura grafica es identica pero la informacion que contiene entre sus nodos es diferente. 3.-arbol binario equivalente.-Son aquellos que su estructura grafica es identica pero ademas la informacion entre sus nodos. 4.-arbol binario completo.-son aquellos que todos nus nodos exepto el ultimo nivel tienen sus dos hijos. 5.-arbol binario lleno:es aquel que tiene su numero maximo de posibles nodos. rboles Rojo-Negro Un rbol rojo negro es un tipo abstracto de datos, concretamente es un rbol binario de bsqueda equilibrado, una estructura de datos utilizada en informtica y ciencias de la computacin. La estructura original fue creada por Rudolf Bayer en 1972, que le dio el nombre de rboles-B binarios simtricos, pero tom su nombre moderno en un trabajo de Leo J. Guibas y Robert Sedgewick realizado en 1978. Es complejo, pero tiene un buen peor caso de tiempo de ejecucin para sus operaciones y es eficiente en la prctica. Puede buscar, insertar y borrar en un tiempo O(log n), donde n es el nmero de elementos del rbol. rbol AA Un rbol AA es un tipo de rbol binario de bsqueda auto-balanceable utilizado para almacenar y recuperar informacin ordenada de manera eficiente. Los rboles AA reciben el nombre de su inventor, Arne Andersson.
yLos rboles AA son una variacin del rbol rojo-negro, que a su vez es una mejora

del rbol binario de bsqueda. A diferencia de los rboles rojo-negro, los nodos rojos en un rbol AA slo pueden aadirse como un hijo derecho. En otras palabras, ningn nodo rojo puede ser un hijo izquierdo. De esta manera se simula un rbol 2-3 en lugar de un rbol 2-3-4, lo que simplifica las operaciones de mantenimiento. Los algoritmos de mantenimiento para un rbol rojo-negro necesitan considerar siete diferentes formas para balancear adecuadamente el rbol:

rboles Multicamino

Un rbol multicamino posee un grado g mayor a dos, donde cada nodo de informacin del rbol tiene un mximo de g hijos.Existen muchas aplicaciones en las que el volumen de la informacin es tal, que los datos no caben en la memoria principal y es necesario almacenarlos, organizados en archivos, en dispositivos de almacenaminento secundario. Esta organizacin de archivos debe ser suficientemente adecuada como para recuperar los datos del mismo en forma eficiente. La principal ventaja de este tipo de rboles consiste en que existen ms nodos en un mismo nivel que en los rboles binarios con lo que se consigue que, si el rbol es de bsqueda, los accesos a los nodos sean ms rpidos.El inconveniente ms importante que tienen es la mayor ocupacin de memoria, pudiendo ocurrir que en ocasiones la mayora de los nodos no tengan descendientes o al menos no todos los que podran tener desaprovechndose por tanto gran cantidad de memoria. Cuando esto ocurre lo ms frecuente es transformar el rbol multicamino en su binario de bsqueda equivalente. rboles B (Arboles de bsqueda multicamino autobalanceados) los rboles-B B-rboles son estructuras de datos de rbol que se encuentran comnmente en las implementaciones de bases de datos y sistemas de archivos. Los rboles B mantienen los datos ordenados y las inserciones y eliminaciones se realizan en tiempo logartmico amortizado. La idea tras los rboles-B es que los nodos internos deben tener un nmero variable de nodos hijo dentro de un rango predefinido. Cuando se inserta o se elimina un dato de la estructura, la cantidad de nodos hijo vara dentro de un nodo. Para que siga mantenindose el nmero de nodos dentro del rango predefinido, los nodos internos se juntan o se parten. Dado que se permite un rango variable de nodos hijo, los rboles-B no necesitan rebalancearse tan frecuentemente como los rboles binarios de bsqueda auto-balanceables, pero por otro lado pueden desperdiciar memoria, porque los nodos no permanecen totalmente ocupados. rbol-B+ Un rbol-B+ es una variacin de un rbol-B. En un rbol-B+, en contraste respecto un rbol-B, toda la informacin se guarda en las hojas. Los nodos internos slo contienen claves y punteros. Todas las hojas se encuentran en el mismo, ms bajo nivel. Los nodos hoja se encuentran unidos entre s como una lista enlazada para permitir bsqueda secuencial. El nmero mximo de claves en un registro es llamado el orden del rbol-B+. El mnimo nmero de claves por registro es la mitad del mximo nmero de claves. Por ejemplo, si el orden de un rbol-B+ es n, cada nodo (exceptuando la raz) debe tener entre n/2 y n claves.

rbol-B* Un rbol-B* es una estructura de datos de rbol, una variante de rbol-B utilizado en los sistemas de ficheros HFS y Reiser4, que requiere que los nodos no raz estn por lo menos a 2/3 de ocupacin en lugar de 1/2. Para mantener esto los nodos, en lugar de generar inmediatamente un nodo cuando se llenan, comparten sus claves con el nodo adyacente. Cuando ambos estn llenos, entonces los dos nodos se transforman en tres. Tambin requiere que la clave ms a la izquierda no sea usada nunca. No se debe confundir un rbol-B* con un rbol-B+, en el que los nodos hoja del rbol estn conectados entre s a travs de una lista enlazada, aumentando el coste de insercin para mejorar la eficiencia en la bsqueda.

OPERACIONES BASICAS SOBRE ARBOLES BINARIOS -CREACION Se definir el rbol con una clave de tipo entero (puede ser cualquier otra tipo de datos) y dos hijos: izquierdo (izq) y derecho (der). Para representar los enlaces con los hijos se utilizan punteros. El rbol vaco se representar con un puntero nulo. Un rbol binario puede declararse de la siguiente manera:
typedef struct tarbol { int clave; struct tarbol *izq,*der; } tarbol;

- INSERCION La insercin tampoco es complicada. Es ms, resulta practicamente idntica a la bsqueda. Cuando se llega a un rbol vaco se crea el nodo en el puntero que se pasa como parmetro por referencia, de esta manera los nuevos enlaces mantienen la coherencia. Si el elemento a insertar ya existe entonces no se hace nada.
void insertar(tarbol **a, int elem) { if (*a == NULL) { *a = (arbol *) malloc(sizeof(arbol)); (*a)->clave = elem; (*a)->izq = (*a)->der = NULL; } else if ((*a)->clave < elem) insertar(&(*a)->der, elem); else if ((*a)->clave > elem) insertar(&(*a)->izq, elem); }

- BORRADO La operacin de borrado si resulta ser algo ms complicada. Se recuerda que el rbol debe seguir siendo de bsqueda tras el borrado. Pueden darse tres casos, una vez encontrado el nodo a borrar: 1) El nodo no tiene descendientes. Simplemente se borra. 2) El nodo tiene al menos un descendiente por una sola rama. Se borra dicho nodo, y su primer descendiente se asigna como hijo del padre del nodo borrado. Ejemplo: en el rbol de la figura 5 se borra el nodo cuya clave es -1. El rbol resultante es:

3) El nodo tiene al menos un descendiente por cada rama. Al borrar dicho nodo es necesario mantener la coherencia de los enlaces, adems de seguir manteniendo la estructura como un rbol binario de bsqueda. La solucin consiste en sustituir la informacin del nodo que se borra por el de una de las hojas, y borrar a continuacin dicha hoja. Puede ser cualquier hoja? No, debe ser la que contenga una de estas dos claves: la mayor de las claves menores al nodo que se borra. Suponer que se quiere borrar el nodo 4 del rbol de la figura 5. Se sustituir la clave 4 por la clave 2. la menor de las claves mayores al nodo que se borra. Suponer que se quiere borrar el nodo 4 del rbol de la figura 5. Se sustituir la clave 4 por la clave 5. El algoritmo de borrado que se implementa a continuacin realiza la sustitucin por la mayor de las claves menores, (aunque se puede escoger la otra opcin sin prdida de generalidad). Para lograr esto es necesario descender primero a la izquierda del nodo que se va a borrar, y despus avanzar siempre a la derecha hasta encontrar un nodo hoja. A continuacin se muestra grficamente el proceso de borrar el nodo de clave 4:

Codificacin: el procedimiento sustituir es el que desciende por el rbol cuando se da el caso del nodo con descencientes por ambas ramas.
void borrar(tarbol **a, int elem) { void sustituir(tarbol **a, tarbol **aux); tarbol *aux; if (*a == NULL) /* no existe la clave */ return; if ((*a)->clave < elem) borrar(&(*a)->der, elem); else if ((*a)->clave > elem) borrar(&(*a)->izq, elem); else if ((*a)->clave == elem) { aux = *a; if ((*a)->izq == NULL) *a = (*a)->der; else if ((*a)->der == NULL) *a = (*a)->izq; else sustituir(&(*a)->izq, &aux); /* se sustituye por la mayor de las menores */ free(aux); } }

ARBOLES BALANCEADOS
Los rboles AVL estn siempre equilibrados de tal modo que para todos los nodos, la altura de la rama izquierda no difiere en ms de una unidad de la altura de la rama derecha. Gracias a esta forma de equilibrio (o balanceo), la complejidad de una bsqueda en uno de estos rboles se mantiene siempre en orden de complejidad O(log n). El factor de equilibrio puede ser almacenado directamente en cada nodo o ser computado a partir de las alturas de los subrboles. Para conseguir esta propiedad de equilibrio, la insercin y el borrado de los nodos se ha de realizar de una forma especial. Si al realizar una operacin de insercin o borrado se rompe la condicin de equilibrio, hay que realizar una serie de rotaciones de los nodos. Los rboles AVL ms profundos son los rboles de Fibonacci.

Factor de equilibrio
Cada nodo, adems de la informacin que se pretende almacenar, debe tener los dos punteros a los rboles derecho e izquierdo, igual que los rboles binarios de bsqueda (ABB), y adems el dato que controla el factor de equilibrio. El factor de equilibrio es la diferencia entre las alturas del rbol derecho y el izquierdo: FE = altura subrbol derecho - altura subrbol izquierdo; Por definicin, para un rbol AVL, este valor debe ser -1, 0 1. Si el factor de equilibrio de un nodo es: 0 -> el nodo est equilibrado y sus subrboles tienen exactamente la misma altura. 1 -> el nodo est equilibrado y su subrbol derecho es un nivel ms alto. -1 -> el nodo est equilibrado y su subrbol izquierdo es un nivel ms alto. Si el factor de equilibrio Fe2 o Fe-2 es necesario reequilibrar.

CONCLUSION

De este trabajo se podra decir que un rbol binario se define como un conjunto finito de elementos llamados nodos. En estos casos se puede usar terminologa de relaciones familiares para descubrir las relaciones entre los nodos de un rbol; y que un rbol puede ser implementado fcilmente en una computadora. Es bueno hacer nfasis en esto ya que se puede saber mucho sobre lo que tiene que ver con los rboles; entre las cosas que podemos mencionar se encuentra la raz, los nodos de un rbol y la diferencia entre nodos sucesores y nodos terminales, como se muestran en el contenido del trabajo.

BIBLIOGRAFIA:http://www.programacionfacil.com/estructura_de_datos:arbol_binario http://computacion.cs.cinvestav.mx/~acaceres/courses/estDatosCPP/node51.html