Está en la página 1de 23

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Datos importantes de los Árboles Para comprender mejor que es un árbol comenzaremos explicando como está estructurado. Nodos: Se le llama Nodo a cada elemento que contiene un Árbol. Nodo Raíz: Se refiere al primer nodo de un Árbol. Un árbol que no tiene ningún nodo se llama árbol vacío o nulo. El peso se puede calcular mediante cualquier tipo de recorrido el cual valla contando los nodo a medida que avanza sobre la estructura. El peso es un árbol es igual a la suma del peso de los sub-árboles hijos + 1 peso = peso(hijo1) + peso(hijo2) + peso(hijoN)+ 1 Nota: Los tipos de recorridos los veremos mas adelante. Este factor es importante por que nos da una idea del tamaño del árbol y el tamaño en memoria que nos puede ocupar en tiempo de ejecución(Complejidad Espacial en análisis de algoritmos. altura(hijo2). Tema 1(15p) 1. Nodo Hermano: Los nodos hermanos son aquellos nodos que comparte a un mismo padre en común dentro de la estructura. de las cuales ya hemos hablado en días pasados. Nodo Padre: Se utiliza este termino para llamar a todos aquellos nodos que tiene al menos un hijo. Nodo Hijo: Los hijos son todos aquellos nodos que tiene un padre. El peso es un árbol es igual a la suma del peso de los sub-árboles hijos + 1 peso = peso(hijo1) + peso(hijo2) + peso(hijoN)+ 1 Nota: Los tipos de recorridos los veremos mas adelante. Los Árboles se caracterizan por almacenar sus nodos en forma jerárquica y no en forma lineal como las Listas Ligadas. hasta llegar a la raíz + 1.) El peso se puede calcular mediante cualquier tipo de recorrido el cual valla contando los nodo a medida que avanza sobre la estructura.  Un árbol vacío tiene 0 niveles  El nivel de la Raíz es 1  El nivel de cada nodo se calculado contando cuantos nodos existen sobre el. Colas. Un árbol que no está vacío consta de un nodo raíz y potencialmente muchos niveles de nodos adicionales que forman una jerarquía. cuando a un nodo hoja le agregamos un hijo. Los Árboles son las estructuras de datos mas utilizadas. y de forma inversa también se podría. pero también una de las mas complejas. Altura: Le llamamos Altura al número máximo de niveles de un Árbol. Por ejemplo. el nodo hoja pasa a ser un nodo rama pero a demas el árbol crece una generación por lo que el Árbol tiene un nivel mas. Que es un Árbol? Un árbol es una estructura (posiblemente no lineal) de datos compuesta de nodos. . contar cuantos nodos existes desde la raíz hasta el nodo buscado + 1..altura(hijoN)) + 1 Peso: Conocemos como peso a el número de nodos que tiene un Árbol. Nodo Rama: Estos son todos aquellos nodos que no son la raíz y que ademas tiene al menos un hijo. Solo un nodo del Árbol puede ser la Raíz. Los arboles a demas de los nodos tiene otras propiedades importantes que son utilizadas en diferente ámbitos los cuales son: Nivel: Nos referimos como nivel a cada generación dentro del árbol. vértices y aristas que es acíclica.Pilas. Nodo Hoja: Son todos aquellos nodos que no tienen hijos.etc. los cuales siempre se encuentran en los extremos de la estructura. Orden: El Orden de un árbol es el número máximo de hijos que puede tener un Nodo.Cada generación tiene un número de Nivel distinto que las demas generaciones. La altura es calculado mediante recursividad tomando el nivel mas grande de los dos sub-árboles de forma recursiva de la siguiente manera: altura = max(altura(hijo1). Orden: El Orden de un árbol es el número máximo de hijos que puede tener un Nodo.

Árboles binarios Esta estructura se caracteriza por que cada nodo solo puede tener máximo 2 hijo. Sin embargo. en la figura 7 podemos apreciar dos árboles con grado 2 y grado 3. Árbol binario perfecto: Es un Árbol lleno en donde todos las Hojas están en el mismo Nivel. 10: Podemos apreciar que el árbol de la derecha no esta lleno ya que uno de sus nodos no cumple con la condición cero o 2 hijos. estos dos arboles también los podemos definir como Árbol n-ario con n = 2 y n=3 respectivamente. Árbol binario lleno: Es aquel que el que todos los nodos tiene cero o 2 hijos con excepción de la Raíz. Existen escenarios donde podemos sacar un Sub-Árboles del Árbol para procesarlo de forma separada. Fig. Agregarlos. si no que ya lo debemos conocer cuando diseñamos nuestra estructura. de esta forma el Sub-Árboles pasa a ser un Árbol independiente.1. del lado derecho podemos ver que aunque el árbol esta lleno no tiene todas las hojas al mismo nivel lo que hace que no sea un árbol binario perfecto pero si lleno. dicho de otra manera es un Árbol n- ario de Grado 2. Árbol n-ario los arboles n-arios son aquellos arboles donde el número máximo de hijos por nodo es de N. Este valor no lo calculamos. Grado: El grado se refiere al número mayor de hijos que tiene alguno de los nodos del Árbol y esta limitado por el Orden. ya que este indica el número máximo de hijos que puede tener un nodo. ya que si queremos calcular esto lo que obtendremos es el grado(hablamos de el continuación). .entre otras operaciones. ya que cada nodo solo podría tener un Hijo y tendríamos un Árbol como la Imagen de la Fig. ya que el nodo C solo tiene un hijo. 11: En la imagen podemos apreciar que el árbol de la izquierda tiene todas sus hojas al mismo nivel y que ademas esta lleno. Fig. También podemos eliminar Sub-Árboles completos.Notemos que un Árbol con Orden = 1 no tendría sentido ya que seria una estructura lineal. lo que lo convierte en un árbol binario perfecto.

los recorridos nos pueden ayudar encontrar un nodo en el árbol. Este tipo de búsquedas también se conocen como búsquedas a ciegas. entonces tendríamos que regresar para irnos por el segundo camino. Fig.Recorrido sobre Árboles Los recorridos son algoritmos que nos permiten recorrer un árbol en un orden especifico. Básicamente podemos catalogar las búsqueda en dos tipos. Búsqueda en profundidad Recorrido Pre-orden: El recorrido inicia en la Raíz y luego se recorre en pre-orden cada unos de los sub-árboles de izquierda a derecha.el cual nos lleva a nuestro destino(Para esto ya recorrimos los 50 kilómetros de ida y los 50 kilómetros de regreso lo que nos da 100 kilómetros mas a nuestra ruta). A este tipo de escenarios en los cuales las búsquedas de hacen a ciegas los conocemos como búsquedas no informadas. Lo que tendríamos que hacer es recorrer el primero camino y después de 50 kilómetros encontrarnos con que el camino esta en construcción. Fig. Para comprender mejor esta definición observemos la siguiente imagen: . el problema a qui es que uno después de 50 kilómetros esta en construcción y el otro nos lleva a nuestro destino. Esta definición puede ser un poco compleja de entender por lo que mejor les dejo la siguiente imagen. 13: Codigo de una función recursiva que recorre un árbol en preorden. las búsqueda en profundidad y las búsquedas en amplitud. Para comprender mejor que es una búsqueda no informada expondremos el siguiente ejemplo: Imagine que vamos por la carretera y de repente encontramos dos caminos. Búsquedas no informadas Las búsquedas no informadas son aquellas en que se realiza el viaje por todo el árbol sin tener una pista de donde pueda estar el dato deseado. o buscar una posición determinada para insertar o eliminar un nodo. sin embargo ninguno de los caminos tiene señalamiento. 12:En la imagen podemos ver el orden en que es recorrido el árbol iniciando desde la Raíz. Las siguientes métodos de búsqueda que veremos a continuación(Búsqueda en profundad y Búsqueda en amplitud) pertenecen a las búsquedas no informadas. Recorrido Pos-orden: Se recorre el pos-orden cada uno de los sub-árboles y al final se recorre la raíz.

ya que toda su descendencia ha sido procesada. Podemos apreciar que la Raíz no es el primero elemento en ser impreso pues este recorrido recorre su rama izquierda. 17: Código de una función recursiva que recorre un árbol en inorden . luego la raíz del sub-árbol y luego la rama derecha. Fig. Fig. 15: Código de una función recursiva que recorre un árbol en posorden Recorrido in-orden: Se recorre en in-orden el primer sub-árbol. Sin embargo es importante notar que el primer nodo que se imprime no es la Raiz pues en este recorrido la Raíz de cada Sub-Árbol es procesado al final. 14: En la imagen podemos observar como se realiza el recorrido en Pos-Orden. luego se recorre la raíz y al final se recorre en in-orden los demas sub-árboles Fig. Fig. 16:En la imagen se muestra como es el recorrido In-Orden.

Fig. Fig. ya que el algoritmo se detiene cuando el elemento buscado es encontrado. Terminamos sin un resultado. Se recorre primero la raíz. Mientras que la cola no este vacía se saca el primer elemento de la cola y continuamos con el paso 3. y la segunda es que se utiliza una Cola para controlar el flujo del recorrido. En esta publicación hemos visto los puntos vas relevantes a en cuenta a lo que son los arboles y los principales métodos de búsqueda. si la cola esta vacía entonces nos vamos al paso 5. tiene una gran aplicaciones en la ciencia y en la programación convencional. luego se recorren los demas nodos ordenados por el nivel al que pertenecen en orden de Izquierda a derecha. Conclusiones Como hemos observado los arboles son estructuras bastante complejas. el primero es que esta función no es recursiva. Se agrega la Raíz a la cola de nodos por visitar 2. Búsqueda en amplitud. Los pasos para hacer el recorrido es el siguiente: 1. sin embargo estamos lejos de cubrir este tema en profundidad ya que existen muchísimos tipos de operaciones y algoritmos que se pueden realizar sobre estas estructuras de datos. 4. 2. Este tipo de búsqueda se caracteriza por que la búsqueda se hace nivel por nivel y de izquierda a derecha. En los últimos años este tipo de estructuras ha sido utilizadas con mucha frecuencia en la Inteligencia artificial. Si no lo es se agregan todos los hijos del nodo a la pila de nodos pendientes por procesar. Regresamos al paso 2. Espero que este información te sirve de utilidad y no olvides darle like y recomendar esta publicación ya que esto me servirá para crear mas y mejor material. En la imagen podemos observa que el árbol es recorrido en su totalidad pero esto no siempre es a sí. Si lo es. Pero. 19: Código de un función que recorre el árbol en amplitud. 5. entonces hemos terminado. 3. Cuál es la diferencia existente entre un árbol binario y un árbol binario de búsqueda? . Si observamos el código de forma minuciosa podemos observar dos puntos muy interesantes. 18: En la imagen se observa como es que un nodo es buscado mediante la búsqueda en profundidad. Se valida si el elemento sacado de la pila es el que estamos buscando.

85) Los nodos que forman parte de la estructura interna del árbol (que no son raíz ni hoja) se llaman nodos internos (en el ejemplo. a. . Medio c. Nodo que no es raíz. Descendente e. La profundidad de la raiz es cero. Ancestro c. 14. los nodos 42. Externo d. Nodo que no es raíz. Cuál es la diferencia existente entre un Nodo Interno y un Nodo Hoja? Hola Comunidad Quisiera Saber si estoy bien o mal ! lo he respondido de la siguiente manera 1. los nodos 2. Grado c. ni terminal u hoja se le conoce como: nodo interno. 75. La profundidad de la raiz es cero. ni terminal u hoja se le conoce como. Hermano b. Altura d. Grado e. Niveles Ustedes me diran si he respondido Bien Hola. Es el número de descendente directos de un determinado nodo se conoce como a. 66. 54. La profundidad de unnodo se define como la longitud del camino (único) que comienza en la raiz y termina en el nodo. y laprofundidad de un nodo se puede calcular como la profundidad de su padre mas uno. Interno 2. Es el número de arcos que deben ser recorridos para llegar a un determinado nodo se conoce como. Como se define la profundidad de un nodo? La profundidad de un nodo se define como la longitud del camino (único) que comienza en la raiz y termina en el nodo. el 60) Los nodos terminales que carecen de descendientes se llaman hojas (en el ejemplo. Como se define la altura de un Nodo? La altura de un árbol se define como la altura de su raiz. 3. Interno b. A la profundidad de un nodo también se la denomina nivel del nodo en el árbol. 72. si tomamos una figura de un árbol: El nodo padre de todos los demás nodos es el nodo raíz (en el ejemplo. 4. Hermano b. Niveles e ancestros 3. 73) 1. y la profundidad de un nodo se puede calcular como la profundidad de su padre mas uno. altura d. a. 5.

. 85. 3. 2. Es el número de arcos que deben ser recorridos para llegar a un determinado nodo se conoce como: niveles. Es el número de descendente directos de un determinado nodo se conoce como: grado. ya que no siempre se usa la misma nomenclatura. o según el profesor que explique la materia. Cada arco indica el paso de un nivel a otro del árbol. (8p) Considerando la siguiente secuencia de elementos: 45. Por simplicidad asuma que las listas solo contienen nros enteros. Grado de un nodo: es el número de nodos hijos que tiene dicho nodo (solo se tiene en cuenta los nodos interiores) Un nodo hoja no tiene grado. (10p) Las Listas Enlazadas pueden almacenar elementos de un conjunto. depende del libro que se tome como referencia. 2. 47. 62. (1p) Muestre la impresión resultante del recorrido en orden. Grado de un árbol: Es el máximo de los grados de todos los nodos de un árbol. 20.. 15. 62. . 85. 91. 91. Diseñe un algoritmo que reciba 2 Listas Enlazadas Simples A y B y retorne una tercera Lista C consistente en la intersección de dichas listas. partiendo de la raiz. 20. 50. 3. 50. (10p) Muestre las inserciones que se realizan con la siguiente secuencia ingresada por el usuario: 45. 15. 7. (9p) Muestre paso a paso las eliminaciones sucesivas de los siguientes nodos: 2. Tema 3 (20p) 1. 45. Máximo grado de todos los nodos del árbol: grado del árbol. que sea capaz de calcular el tamaño de un Nodo cualquiera de dicho Árbol. 7. Nota: la nomenclatura de árboles puede variar según qué libro se tome como referencia. 91. Nodos descendientes directos de otro: nodos hijos. Como digo. 2. Longitud de camino del nodo x: número de arcos que deben ser recorridos para llegar a un nodo x. 47. Ancestro: nodo que se encuentra en el camino entre un nodo y la raíz del árbol. Calcule el costo asintótico de su algoritmo (2p). Tema 5 (10p) (2p) En un Árbol Binario de Búsqueda. en que consiste el tamaño de un Nodo? (8p) Codifique una función Java basada en la estructura de Árbol Binario de Búsqueda estudiada en clase. Muestre el resultado de realizar la inserción de los mismos en: a) Una Lista Enlazada Simple b) Una Lista Enlazada Ordenada c) Una Pila d) Una Cola 2. Tema 2 (20p) Considerando un Árbol Binario de Búsqueda: 1. 2.