Arboles en programación

Arboles en programación gyarmentarIgg8 110R6pp 16, 2011 12 pagcs ÁRBOLES CAPÍTULO 6 Desde el punto de vista conceptual, un árbol es un objeto que comienza con una raíz (root) y se extiende en varias ramificaciones o líneas (edges), cada una de las cuales puede extenderse en ramificaciones hasta terminar, finalmente en una hoja. Los árboles representan las estructuras no-lineales y dinámicas de datos mas im artantes en computación. Dinámicas, puesto q la ejecución de un pr 12 Sv. içx to nos ede cambiar durante sto que a cada mentas. lemento del árbol p den Propiedades En la ciencia de la computación definimos un árbol como un conjunto de nodos y líneas. Un nodo es un elemento de informacion que reside en el árbol. una línea es un par de nodos ordenados , y a la secuencia de líneas se le denomina ruta (path). Además, los árboles tienen las siguientes propiedades: Tienen un nodo al que se le llama raíz del árbol. Todos los nodos, excepto la raíz, tienen una sola línea de entrada (el nodo raíz no tiene ninguna). Existe una ruta única del nodo raíz a todos los demás nodos del árbol.

Si hay una ruta , entonces a „b» se le denomina ??hljo» de „au y es el nodo raíz de un subárbol. CARACTERÍSTICAS Y PROPIEDADES DE LOS ÁRBOLES. 1. 2. 3. 4. 5. 6. 7. 8. g. 10. NODO indica un elemento, o ítem, de información. * Todo árbol que no es vacío, tiene un único nodo raíz. * Un nodo X es descendiente directo de un nodo Y, si el nodo X es apuntado por el nodo Y. X es hijo de Y. * Un nodo X es antecesor directo de un nodo Y, si el nodo X apunta al nodo Y. X es padre de Y. *Se dice que todos los nodos que son descendientes directos (hijos) de un mismo nodo (padre), son hermanos. Todo nodo que no tiene amificaciones (hijos), se conoce con el nombre de terminal u hoja. * Todo nodo que no es raíz, ni terminal u hoja se conoce con el nombre de interior. Grado es el número de descendientes directos de un determinado nodo. Grado del árbol es el máximo grado de todos los nodos del árbol. * Nivel es el número de arcos que deben ser recorridos para llegar a un determinado nodo. Por definición, la raíz tiene nivel 1. *Altura del árbol es el máximo número de niveles de todos los nodos del árbol. A es la raíz del árbol B es hijo de A A es padre de B By C son hermanos I,EJ,K,G,L son hojas

Ejemplo B, D, F, C, H son; nodos interiores El grado de nodo A es 2 Nivel del nodo A es 1 (def) Nivel B es 2 Altura del árbol 4 B 2 OF V tiene longitud de camino 1, sus descendientes directos longitud de camino 2 y asi sucesivamente. c D LONGI UD DE CAMINO INTERNO. La longitud de camino interno es la suma de las longitudes de camlno de todos los nodos del árbol. Es importante por que permite conocer los caminos que tiene el árbol. Puede calcularse por medio de la siguiente fórmula: h LCI = V tener descendientes y normalmente se representan con la forma de un cuadrado.

El número de nodos especiales de este árbol es 25, del árbol de grado 3. Definición LCE Se puede definir ahora la suma de las longitudes de mino externo como la dos los nodos especiales un árbol binario cada nodo puede tener como máximo dos subárboles; y siempre es necesario distinguir entre el subárbol izquierdo y el subárbol derecho Aplicaciones de árboles binarios árboles binarios de búsqueda representación de una expresión algebraica árbol genealógico ÁRBOLES BINARIOS DISTINTOS, SIMILARES Y EQUIVA ENTES. C] Dos árboles blnarios son distintos cuando sus estructuras son diferentes.

Ejemplo: s OF V C] Donde ABC significa árbol binario completo, y „h» la altura del árbol. REPRESENTACION DE ARBOLES BINARIOS EN MEMORIA Existen dos formas de representar un árbol binario en memoria: Aquí lo veremos por medio de punteros. Los nodos del árbol binario serán representados como registros, que contendrán como mínimo tres campos. En un campo se almacenará la información del nodo. Los dos restantes se utilizarán para apuntar a los subárboles izquierdo y derecho respectivamente del subnodo en cuestión IZQ INFO DER Por medio de punteros Por medio de arreglos IZQ INFO DER

IZQ: Campo donde se almacena la dirección del subárbol izquierdo del nodo T. INFO: Campo donde se almacena la información de interés del nodo. C] DER: Campo donde se almacena la dirección del subárbol derecho del nodo T. La definición de un árbol binario en lenguaje algorítmico: ENLACE. ANODO NODO IZQ: tipo ENLACE n INFO: tipo de dato DER: tipo E visitar los nodos del árbol en forma sistemática; de tal manera que todos los nodos del mismo sean visitados una sola vez. Existen tres formas diferentes de efectuar el recorrido y todas ellas de naturaleza recursiva, éstas son: Recorridos

Recorrido en preorden Recorrido en inorden Visitar la raiz Recorrer el subárbol izquierdo Recorrer el subárbol derecho Recorrer el subárbol izquierdo Visitar la raíz Recorrer el subárbol derecho Recorrer el subárbol izquierdo Recorrer el subárbol derecho Visitar la raíz Recorrido en postorden El termino visitar puede ser reemplazado por escribir la información el nodo. más variables de información del nodo, IZQ y DER son variables de tipo puntero} Si NODO F NILL entonces INORDEN(NODOA. IZQ) {Llamada recursiva con la rama izquierda} Visitar el NODO {Escribir la información NODOA.

INFO} INORDEN(NODOA. DER) {Llamada recursiva con la rama derecha} Fin-si Fin-algo itmo ALGORITMO POSTORDEN POSTORDEN(NODO) {El algoritmo realiza el recorrido postorden en un árbol binario. NODO es un dato de tipo PUNTERO} {INFO, IZQ y DER son campos del registro NODO. INFO es una o más variables de información del nodo, IZQ y DER son variables de tipo puntero} Si NODO F NICL entonces POSTORDEN(NODOA. IZQ) {Llamada recursiva con la rama izquierda} POSTORDEN(NODOA. DER) (Llamada recursiva con la rama derecha} C] Visitar el NODO {Escribir la información NODOA. INFO} C] Fin-si D Fin-algoritmo.

Debe recordarse que antes de recorrer un árbol, debe cargarse en memoria. Un algoritmo muy simple que cargue los nodos de un árbol binario en memoria, es el que sigue: CARGA (NODO) C] { El algoritmo carga los nodos de un árbol binario en memoria. NODO es una variable de tipo puntero. La primera vez NODO es creado en el programa principal} C] Leer información(lNFOR) D Hacer NODOA. INFO D INFOR C] Escribir «¿Existe nodo por la izquierda ? » Leer respuesta C] Si respuesta «si» entonces C] CREA(OTRO) {Crea un nuevo nodo, OTRO es de ipo puntero} Hacer NODOA. IZQ OTRO CARGA(NODOA.

IZQ) {Llamada recursiva} C] Si no C] Hacer NODOA. IZQ O NILL C] Fin si Escribir «¿Existe nodo por la derecha C] Leer respuesta n Si respuesta — » – Si» entonces CREA(OTR Escribir «¿Existe nodo por la derecha ? » C] Leer respuesta C] Si respuesta «si» entonces CREA(OTRO) {Crea un nuevo nodo, OTRO es de tipo puntero} C] Hacer NODO'». DER C] OTRO C] CARGA(NODOA. DER) {Llamada recursiva} n Si no Hacer NODO». DER NICL Fin Si Fin Algoritmo ÁRBOLES BINARIOS DE BÚSQUEDA. El árbol binario de búsqueda es una estructura sobre la cual se ueden realizar eficientemente las operaciones de búsqueda, inserción y eliminación.

Formalmente se define un árbol binario de búsqueda de la siguiente manera: «Para todo nodo T del árbol debe cumplirse que todos los valores de los nodos del subárbol izquierdo de T deben ser menores o iguales al valor del nodo T. De forma similar, todos los valores de los nodos el subárbol derecho de T deben ser mayores o iguales al valor del nodo T». 120 87 140 43 99 130 22 65 aclarar que la primera vez la variable NODO no puede ser vacía. } Si INFOR < NODOA. INFO entonces Si NODO". IZQ = NICL entonces Escribir "El nodo no se encuentra en el árbol" Sino BÚSQUEDA (NODOA.

IZQ, INFOR) {Llamada recursiva} Fin Si Sino Si INFOR > NODO». INFO entonces Si NODOA. DER = NICL entonces Escribir «El nodo no se encuentra en el árbor’ Sino BÚSQUEDA (NODOA. DER, INFOR) {Llamada recursiva} Fin Si Sino Escribir «El nodo se encuentra en el árbol» Fin Si Fin Si Fin del algoritmo Otra forma de escribir el algoritmo de búsqueda: Algoritmo de Búsueda BUSQUEDAI (NODO, INFOR) {El algoritmo localiza un nodo en un árbol binario de búsqueda. NODO es una variable de tipo puntero que apunta a la raíz del árbol.

INFOR es na variable que contiene la información que se desea localizar en el árbol. } Si NODO F NILL entonces Si INFOR < NODOA. INFO entonces BUSQUEDA (NODOA. IZQ, INFOR) {Llamada recursiva} Si no Si INFOR > NODOA. INFO entonces BUSQUEDA (NODOA. DER, INFOR) {Llamada recursiva} Sino Escribir «El nodo se encuentra en el árbol» Fln Si Fin SI Si no Escribir «El nodo no se encuentra en el árbol» Fin si Fin del Algoritmo Ejemplos Supongamos que se desea localizar la clave 23 en el árbol binario. (P) pasos, (C) comparaciones Ejemplo 2 localiza la clave 123 INSERCIÓN EN UN ÁRBOL BINARIO DE BÚSQUEDA. 2