DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Tamaño: px
Comenzar la demostración a partir de la página:

Download "DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006"

Transcripción

1 ARBOLES ESTRUCTURAS DE DATOS 2006

2 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los cuales es conocido como raíz.

3 Los árboles representan las estructuras no lineales y dinámicas. No lineales, puesto que a cada elemento del árbol pueden seguirle varios elementos. Dinámicas, puesto que la estructura árbol puede cambiar durante la ejecución del programa.

4 EJEMPLOS DE ARBOLES Figura 1 :Árboles

5 CARACTERISTICAS Y PROPIEDADES DE LOS ÁRBOLES EN GENERAL 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 apunta al 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 el 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 ramificaciones (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.

6 CARACTERISTICAS Y PROPIEDADES DE LOS ÁRBOLES EN GENERAL 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. Rama es un camino desde el nodo raíz a una hoja.

7 Figura 2 :Árbol General A raíz del árbol El grado de nodo A es 2 B es el hijo de A. C es hijo de A. El grado de nodo B es 3 B es padre de D. D es padre de I. El grado de nodo C es 2 B y C son hermanos. D, E, F son hermanos. El grado de nodo D es 1 I, E, J, K, G, L son hojas. El grado de nodo E es 0 B, D, F, C y H son nodos interiores. Grado del árbol es 3 Nivel del nodo A es 1. Nivel del nodo E es 3. La altura del árbol es 4.

8 ÁRBOLES BINARIOS Definición 1: Un árbol binario es un árbol en el que cada nodo no puede tener mas de dos hijos o descendientes. Es un árbol de grado 2. Definición 2: Un árbol binario es un conjunto finito de nodos, el cual puede ser vacío o un conjunto que consta de un nodo raíz enlazado a dos árboles binarios disjuntos denominados subárbol izquierdo y subárbol derecho. Figura 3 :Árboles Binarios

9 TERMINOLOGIA ÁRBOLES BINARIOS En un árbol binario los hijos se conocen como hijo izquierdo e hijo derecho Un nodo que no tiene hijos se denomina hoja. En la figura 4 B, C son hojas. El nodo raíz se dice que está en el nivel O en el árbol. Los nodos B y C están en el nivel 1. (figura 4) Altura del árbol se define como el nivel más alto del árbol. En la figura 4 la altura del árbol es 2. Figura 4 :Árbol Binario

10 TERMINOLOGIA ÁRBOLES BINARIOS Un árbol binario está balanceado (equilibrado) si cada nodo tiene exactamente dos hijos o no tiene hijos y si cada hoja está al mismo nivel. Figura 5 :Árbol Binario Equilibrado Figura 6 :Árbol Binario no Equilibrado

11 ÁRBOLES BINARIOS TERMINOLOGIA Los subárboles izquierdo y derecho de un árbol binario deben ser subconjuntos disjuntos, esto es, ningún nodo puede estar en ambos subárboles. Ejemplo: (a) (b) Figura 7 :Árboles Binarios: a) no Disjunto. b) Disjunto

12 ÁRBOLES BINARIOS DISTINTOS, SIMILARES Y EQUIVALENTES ÁRBOLES BINARIOS DISTINTOS Dos árboles binarios son distintos cuando sus estructuras son diferentes Figura 8 :Árboles Binarios distintos

13 ÁRBOLES BINARIOS DISTINTOS, SIMILARES Y EQUIVALENTES ÁRBOLES BINARIOS SIMILARES Dos árboles binarios son similares cuando sus estructuras son idénticas, pero la información que contiene sus nodos difiere entre sí. Figura 9 :Árboles Binarios similares

14 ÁRBOLES BINARIOS DISTINTOS, SIMILARES Y EQUIVALENTES ÁRBOLES BINARIOS EQUIVALENTES Dos árboles binarios son equivalentes si son similares y además los nodos contienen la misma información. Figura 10 :Árboles Binarios equivalentes

15 ÁRBOLES BINARIOS COMPLETOS Se define como un árbol en el que todos sus nodos, excepto los del último nivel, tienen dos hijos; el subárbol izquierdo y el subárbol derecho. Figura 11 :Árbole Binario completo

16 REPRESENTACION DE LOS ÁRBOLES GENERALES COMO BINARIOS Los pasos que se deben aplicar para lograr la conversión del árbol general a binario son los siguientes: Deben enlazarse los hijos de cada nodo en forma horizontal (los hermanos). Debe enlazarse en forma vertical el nodo padre con el hijo que se encuentra más a la izquierda. Debe rotarse el diagrama resultante, aproximadamente 45 grados hacia la izquierda y así se obtendrá el árbol binario correspondiente.

17 REPRESENTACION DE LOS ÁRBOLES GENERALES COMO BINARIOS Figura 12 : Conversión de un árbol general en un árbol binario. (a) Árbol general. (b) Árbol binario luego de aplicar pasos 1 y 2. (c) Árbol binario luego de aplicar el paso 3.

18 REPRESENTACION DE LOS ÁRBOLES GENERALES COMO BINARIOS

19 REPRESENTACION DE LOS ÁRBOLES GENERALES COMO BINARIOS Todo árbol binario obtenido a partir de un árbol general, debe cumplir lo siguiente: En la rama derecha de cada nodo, excepto el nodo raíz, si ésta es distinta de vacío se encuentra un nodo que era hermano de éste en el árbol general. En la rama izquierda de cada nodo (si ésta es distinta de vacío), se encuentra un nodo que era hijo de éste en el árbol generado.

20 REPRESENTACION DE ÁRBOLES BINARIOS EN MEMORIA Existen dos formas tradicionales de representar un árbol binario en memoria. Por medio de listas enlazadas, variables dinámicas. Por medio de arreglos.

21 REPRESENTACION DE ÁRBOLES BINARIOS EN MEMORIA. POR MEDIO DE LISTAS ENLAZADAS. Los nodos del árbol binario serán representadas 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 los subárboles izquierdo y derecho respectivamente del nodo en cuestión. Dado el siguiente nodo T: Donde: 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. DER: campo donde se almacena la dirección del subárbol derecho del nodo T.

22 REPRESENTACION DE ÁRBOLES BINARIOS EN MEMORIA. POR MEDIO DE LISTAS ENLAZADAS. La definición de un árbol binario en lenguaje algorítmico es como sigue. Enlace = ˆ nodo Nodo = registro IZQ: tipo enlace INFO: tipo dato DER: tipo enlace {Fin de la definición Nota: se utiliza ˆ para representar el concepto de dato tipo puntero.

23 REPRESENTACION DE ÁRBOLES BINARIOS EN MEMORIA. POR MEDIO DE LISTAS ENLAZADAS. Figura 13 : Representación de un árbol binario en memoria. (a) Árbol binario. (b) Árbol binario representación memoria.

24 REPRESENTACION DE ÁRBOLES BINARIOS EN MEMORIA. POR MEDIO DE ARREGLOS. (b) 2 n -1= 2 4-1=16-1=15 (a) Figura 14 : Representación de un árbol binario en memoria. (a) Árbol binario. (b) Árbol binario representación memoria con arreglos.

25 REPRESENTACION DE ÁRBOLES BINARIOS EN MEMORIA. POR MEDIO DE ARREGLOS. Para calcular el número de elementos de un árbol es: 2 n -1. n = nivel de profundidad. Dado un nodo I, padre de I pos = [I/2] Dado un nodo I, hijo izq. pos = 2*I Dado un nodo I; hijo der. pos= 2* I + 1 Desventaja: el espacio que hay que dejar disponible, sino se le asigna hijo izq. o der. el espacio se esta multiplicando. Cuando se trabaja con árboles degenerados se pierde mucho espacio.

26 ÁRBOLES DE EXPRESIÓN Los árboles binarios se utilizan para representar expresiones en memoria, esencialmente en compiladores de lenguajes de programación CONSTRUCCION DE ÁRBOLES DE EXPRESION Los paréntesis no se almacenan en el árbol pero están implicados en la forma del árbol. Si se supone que todos los operadores tienen dos operandos, se puede representar una expresión por un árbol binario cuya raíz contiene un operador y cuyos subárboles izquierdo y derecho son los operandos izq. y der. respectivamente. Cada operando puede ser una letra o una subexpresión representada como un subárbol. Todos los operandos letras se almacenan en nodos hojas.

27 ÁRBOLES DE EXPRESIÓN Ejemplo 1: Dada la expresión (X+Y) * (A-B) construir el árbol de expresión.

28 ÁRBOLES DE EXPRESIÓN Ejemplo 3: Deducir la expresión que representa el siguiente árbol binario. 1. X+Y 2. A*(X+Y) 3.(A*(X+Y)) *C Sol: (A*(X+Y)) *C

29 RECORRIDOS EN ÁRBOLES BINARIOS Recorrer un árbol binario significa 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 (todos de forma recursiva) los cuales son: Recorrido en Preorden Recorrido en Inorden Recorrido en Posorden

30 RECORRIDOS EN ÁRBOLES BINARIOS RECORRIDO EN PREORDEN Visitar raíz (escribir la información del nodo). Recorrer el subárbol izquierdo en preorden. Recorrer el subárbol derecho en preorden.

31 RECORRIDOS EN ÁRBOLES BINARIOS Algoritmo: Preorden (nodo) Si nodo Nil entonces { Visitar el nodo (escribir nodo Info) Regresar a Preorden con (nodo Izq) Regresar a Preorden con (nodo der) Fin. El valor en cada nodo es procesado conforme se pasa por cada nodo. Después de que se procese el valor de un nodo dado, son procesados los valores del subárbol izquierdo y a continuación los valores en el subárbol derecho.

32 RECORRIDOS EN ÁRBOLES BINARIOS RECORRIDO EN INORDEN Recorrer el subárbol izquierdo en Inorden Visitar raíz (procesar el valor en el nodo). Recorrer el subárbol derecho en Inorden

33 RECORRIDOS EN ÁRBOLES BINARIOS Algoritmo: Inorden (nodo) Si nodo Nil entonces { Regresar a Inorden (nodo Izq) Visitar el nodo (escribir nodo Info) Regresar a Inorden con (nodo der) Fin. El valor en un nodo no es procesado en tanto no sean procesados los valores de su subárbol izquierdo.

34 RECORRIDOS EN ÁRBOLES BINARIOS RECORRIDO EN POSORDEN Recorrer el subárbol izquierdo en Posorden Recorrer el subárbol derecho en Posorden Visitar raíz (procesar el valor en el nodo).

35 RECORRIDOS EN ÁRBOLES BINARIOS Algoritmo: Posorden (nodo) Si nodo Nil entonces { Regresar a Posorden (nodo Izq) Regresar a Posorden con (nodo der) Visitar el nodo (escribir nodo Info) Fin. El valor en cada nodo no se imprime hasta que son impresos los valores de sus hijos.

36 DEFINICIÓN #define NULL 0 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT struct nodo { struct nodo *izq; tipo info; struct nodo *der; ; Con esta definición de ArbolB las operaciones asociadas especificadas en el TAD quedarían del siguiente modo:

37 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Inicializa el Árbol Binario a través del apuntador raíz. void InicializarArbolB (struct nodo **raiz) { (*raiz)=null;

38 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Crea un Árbol Binario con un solo nodo, el nodo Raíz. struct nodo *CrearArbolB(int valor) { struct nodo *nuevo; if (!ArbolBLleno()) { nuevo = new nodo; nuevo ->info = valor; nuevo ->izq = NULL; nuevo ->der = NULL; return nuevo; else cout << "Árbol Overflow ";

39 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT A partir de dos árboles binarios y de un valor de tipo base, el resultado es un nuevo árbol binario cuyo nodo raíz contiene el valor de tipo base y en el que los árboles originales pasan a ser subárboles izquierdo y derecho. struct nodo * CombArbolB(struct nodo *B1,struct nodo *B2, int valor) { struct nodo *nuevo; if (!ArbolBLleno()) { nuevo = CrearArbolB(valor); nuevo->izq=b1; nuevo->der=b2; return nuevo; else cout << "Árbol Overflow ";

40 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Inserta un nodo en el Árbol Binario como hijo Izquierdo. bool InsHijoIzq(struct nodo *p, int valor) { struct nodo *nuevo; if (p!=null) if (!ArbolBLleno()) { nuevo = CrearArbolB(valor); p->izq = nuevo; return true; else { cout << "Nodo P No Existe "; return false; else { cout << "Árbol Overflow "; return false;

41 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Inserta un nodo en el Árbol Binario como hijo Derecho. bool InsHijoDer(struct nodo *p, int valor) { struct nodo *nuevo; if (p!=null) if ((!ArbolBLleno())) { nuevo = CrearArbolB(valor); p->der = nuevo; return true; else { cout << "Nodo P No Existe "; return false; else { cout << "Árbol Overflow "; return false;

42 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Dado un Árbol, elimina el nodo cuya dirección se envía como parámetro en Ptr. void ElimNodo(struct nodo *ptr) { struct nodo *ant; struct nodo *temp; temp = ptr; if (ptr->der==null) ptr=ptr->izq; else if (ptr->izq==null) ptr=ptr->der; else { if (ant==ptr) ant->izq = temp->izq; else ant->der = temp->izq; delete temp; temp=ptr->izq; ant=ptr; while(temp->der!=null) { ant = temp; temp = temp->der; ptr->info = temp->info;

43 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Dado un Árbol Binario devuelve la información almacenada en su nodo raíz. int DatoRaiz(struct nodo *p) { return p->info; Devuelve el valor verdadero si el Árbol Binario está vacío y falso en caso contrario. bool ArbolBVacio(void) { return (raiz==null);

44 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Devuelve el valor verdadero si el Árbol Binario está lleno y falso en caso contrario. bool ArbolBLleno(void) { struct nodo *p; p = new nodo; if (p!=null) { delete p; return false; else return true;

45 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Permite que una vez que no se requiera más de la utilización del Árbol Binario, liberar este espacio. void LiberarNodos( const struct nodo Tree) { if (Tree!= NULL) { LiberarNodos(Tree->izq); LiberarNodos(Tree->der); delete Tree;

46 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Recorridos en el árbol binario void RecorrerPreOrdenArbol (struct nodo **raiz) { if ((*raiz)!=null) { cout << " " << (*raiz)->info; RecorrerPreOrdenArbol(&((*raiz)->izq)); RecorrerPreOrdenArbol(&((*raiz)->der)); void RecorrerInOrdenArbol (struct nodo **raiz) { if ((*raiz)!=null) { RecorrerInOrdenArbol (&((*raiz)->izq)); cout << " " << (*raiz)->info; RecorrerInOrdenArbol (&((*raiz)->der));

47 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Recorridos en el árbol binario void RecorrerPostOrdenArbol (struct nodo **raiz) { if ((*raiz)!=null) { RecorrerPostOrdenArbol (&((*raiz)->izq)); RecorrerPostOrdenArbol (&((*raiz)->der)); cout << " " << (*raiz)->info;

48 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO UTILIZANDO STRUCT Busca un elemento en el árbol binario int EstaenArbol(struct nodo **raiz, int elem) { if ((*raiz)==null) return 0; else if (elem==((*raiz)->info)) return 1; else return (EstaenArbol((&((*raiz)->izq)),elem) EstaenArbol((&((*raiz)->der)),elem));

49 ARBOL BINARIO DE BUSQUEDA Un árbol binario de búsqueda (que no tiene los valores duplicados de nodos) tienen la característica que los valores en cualquier subárbol izquierdo son menores que el valor en sus nodos padres y los valores en cualquier subárbol derecho son mayores que el valor en sus nodos padres.

50 ARBOL BINARIO DE BUSQUEDA Recorrido del árbol: Preorden: Inorden: Posorden:

51 CREACION DE UN ARBOL BINARIO DE BUSQUEDA Supongamos que se desea almacenar los números: en un árbol binario de búsqueda. Siguiendo la regla, dado un nodo en el árbol todos los datos a su izquierda deben ser menores que todos los datos del nodo actual, mientras que todos los datos a ala derecha deban ser mayores, que dichos datos. Inicialmente el árbol esta vacío y se le debe insertar el 8. A continuación viene el 3. Ya que 3 es menor que 8, el 3 debe ir en el subárbol izquierdo.

52 CREACION DE UN ARBOL BINARIO DE BUSQUEDA A continuación viene el 3. Ya que 3 es menor que 8, el 3 debe ir en el subárbol izquierdo.

53 CREACION DE UN ARBOL BINARIO DE BUSQUEDA A continuación se ha de insertar 1 que es menor que 8 y que 3; por lo tanto irá a la izquierda y debajo de 3.

54 CREACION DE UN ARBOL BINARIO DE BUSQUEDA Cada nuevo elemento se inserta como una hoja del árbol. Los restantes elementos se pueden situar fácilmente. Una propiedad de los árboles binarios de búsqueda es que no son únicos para los datos dados.

55 CREACION DE UN ARBOL BINARIO DE BUSQUEDA Ejemplo: Construir un árbol binario para almacenar los datos 12, 8, 7, 16 y 11.

56 CONSTRUCCION DE UN ÁRBOL BINARIO DE BÚSQUEDA A PARTIR DE RECORRIDO INORDEN, PREORDEN, POSORDEN. Si se dan los recorridos inorden y preorden se procede la siguiente manera: En el preorden el primer elemento es el nodo raíz y los siguientes son nodo raíz de los demás. Se busca en el inorden ese nodo raíz y se divide en subárbol izquierdo y derecho. En el preorden se busca el siguiente nodo raíz y en el inorden los subárboles y así sucesivamente hasta agotar los valores.

57 Ejemplo: Dado los valores: Inorden Preorden Construir el árbol binario de búsqueda correspondiente. Se busca en el preorden el primer elemento que es nodo raíz. Se busca en el inorden ese valor y se divide en subárbol izquierdo y derecho.

58 Se busca en el preorden el siguiente nodo raíz y se subdivide en subárbol izquierdo y derecho y así sucesivamente.

59 Ejemplo: Un árbol binario tiene 10 nodos. El recorrido es inorden y preorden. Son dados como sigue. Dibuje el árbol. Inorden: ABCEDFJGIH Preorden: JCBADEFIGH

60 Ejemplo: Dados los valores: Inorden: Posorden: Construir el árbol binario de búsqueda correspondiente. Se busca en el posorden el último valor que es el nodo raíz. Se busca en inorden el valor y se divide en subárbol izquierdo y derecho.

61 Se busca en posorden siguiente nodo raíz que es 42. Se busca en posorden siguiente nodo raíz que es 13.

62 El árbol binario de búsqueda es una estructura sobre la cual se pueden realizar eficientemente las operaciones de búsqueda, inserción y eliminación. Búsqueda (nodo, valor) Algoritmo Si nodo <> Nil OPERACIONES DE BÚSQUEDA, INSERCCION Y ELIMINACION Entonces Si valor < nodo info. Entonces Búsqueda (nodo izq., valor) Sino Si valor > nodo info. Fin Entonces Búsqueda (nodo der., valor) Sino escribir ( nodo existe ) Fin Sino escribir ( Nodo no se encuentra en el árbol ) Fin.

63 INSERCION EN UN ARBOL BINARIO DE BUSQUEDA Debe compararse la clave a insertar con la raíz del árbol. Si es mayor, debe comenzarse hacia el subárbol derecho. Si es menor debe comenzarse hacia el subárbol izquierdo. Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes condiciones: el subárbol derecho es igual a vacío. El subárbol izquierdo es igual a vacío, en cuyo caso se procederá a insertar el elemento en el lugar que le corresponde. La clave que quiere insertarse es igual a la raíz del árbol; en cuyo caso no se realiza la inserción.

64 INSERCION EN UN ARBOL BINARIO DE BUSQUEDA Algoritmo Si nodo <> Nil Entonces Si valor < nodo info. Entonces Inserción (nodo izq., valor) Sino Si valor > nodo info. Fin Entonces Inserción (nodo der., valor) Sino escribir ( nodo existe ) Fin Sino { crear (nuevo nodo) Fin. Hacer nuevo nodo izq. = Nil; Hacer nuevo nodo der. = Nil; Nuevo nodo info. = valor; Nodo = nuevo nodo

65 INSERCION EN UN ARBOL BINARIO DE BUSQUEDA Ejemplo: Supóngase que se quiere insertar los siguientes valores en un árbol binario de búsqueda que se encuentra vacío Y así sucesivamente hasta que se agoten los valores.

66 ELIMINACION EN UN ARBOL BINARIO DE BUSQUEDA Se debe distinguir los siguientes casos: Si el nodo a borrar es terminal u hoja simplemente se suprime. Si el nodo a borrar tiene un solo descendiente, entonces tiene que sustituirse por ese descendiente. Si el nodo a borrar tiene los dos descendientes entonces se tiene que sustituir por el nodo que se encuentra más a la izquierda en el subárbol derecho o por el nodo que se encuentra más a la derecha en el subárbol izquierdo.

67 Algoritmo Eliminacion(nodo,infor) 1. Si nodo <> Nil Entonces 1.1 Si infor < nodo info. Entonces Eliminación (nodo izq, infor) Sino Si infor > nodo info Entonces Eliminación (nodo der, infor) Sino hacer otro nodo A Si otro der = NULL Entonces hacer nodo otro izq BSino Si otro izq = NULL Entonces hacer nodo otro der Sino hacer Aux otro izq Y Aux1 Aux CRepetir mientras Aux der <> NULL Hacer Aux1 Aux y Aux Aux der Fin. Hacer otro info Aux info otro aux Y Aux1 der Aux izq. Fin (condicional del paso B) Fin (condicional del paso A) Fin (condicional del paso 1.1.1) Fin (condicional del paso 1.1) Quita (otro) {libera la memoria del nodo Sino escribir ( el nodo no se encuentra en el árbol ) Fin

68 Ejemplo: Supóngase que se desea eliminar las siguientes claves del árbol binario de búsqueda: Claves:

69 Eliminación clave: 22 Eliminación clave: 99

70 Eliminación clave: 87 Eliminación clave: 120

71 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO DE BÚSQUEDA UTILIZANDO STRUCT DEFINICIÓN #define NULL 0 struct nodo { struct nodo *izq; tipo info; struct nodo *der; ; Con esta definición de ArbolBB las operaciones asociadas especificadas en el TAD quedarían del siguiente modo:

72 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO DE BÚSQUEDA UTILIZANDO STRUCT Inicializa el Árbol Binario de búsqueda a través del apuntador raíz. void CrearArbolBB (struct nodo **raiz) { (*raiz)=null;

73 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO DE BÚSQUEDA UTILIZANDO STRUCT void InsercionValorArbol (struct nodo **raiz, int valor) { if ((*raiz)!=null) if (valor<((*raiz)->info)) InsercionValorArbol(&((*raiz)->izq),valor); else if (valor>((*raiz)->info)) InsercionValorArbol(&((*raiz)->der),valor); else cout << "El nodo existe en el arbol\n"; else { struct nodo *n; n=new nodo; n->izq=null; n->der=null; n->info=valor; (*raiz)=n;

74 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO DE BÚSQUEDA UTILIZANDO STRUCT void EliminacionValorArbol (struct nodo **raiz, int valor) { struct nodo *Otro, *Aux, *Aux1; Otro=new nodo; Aux=new nodo; Aux1=new nodo; if ((*raiz)!=null) { if (valor<((*raiz)->info)) EliminacionValorArbol(&((*raiz)->izq),valor); else if (valor>((*raiz)->info)) EliminacionValorArbol(&((*raiz)->der),valor); else { Otro=*raiz; if ((Otro->der)==NULL) (*raiz)=otro->izq; else { if ((Otro->izq)==NULL) (*raiz)=(otro->der); else { Aux=(Otro->izq); Aux1=Aux; while ((Aux->der)!=NULL) { Aux1=Aux; Aux=(Aux->der); (Otro->info)=(Aux->info); Otro=Aux; (Aux1->der)=(Aux->izq); delete(otro); else cout << "El nodo no se encuentra en el arbol\n";

75 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO DE BÚSQUEDA UTILIZANDO STRUCT Recorridos en el árbol binario void RecorrerPreOrdenArbol (struct nodo **raiz) { if ((*raiz)!=null) { cout << " " << (*raiz)->info; RecorrerPreOrdenArbol(&((*raiz)->izq)); RecorrerPreOrdenArbol(&((*raiz)->der)); void RecorrerInOrdenArbol (struct nodo **raiz) { if ((*raiz)!=null) { RecorrerInOrdenArbol (&((*raiz)->izq)); cout << " << (*raiz)->info; RecorrerInOrdenArbol (&((*raiz)->der));

76 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO DE BÚSQUEDA UTILIZANDO STRUCT Recorridos en el árbol binario void RecorrerPostOrdenArbol (struct nodo **raiz) { if ((*raiz)!=null) { RecorrerPostOrdenArbol (&((*raiz)->izq)); RecorrerPostOrdenArbol (&((*raiz)->der)); cout << " " << (*raiz)->info;

77 IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO DE BÚSQUEDA UTILIZANDO STRUCT Busca un elemento en el árbol binario de búsqueda void BusquedaValorArbol (struct nodo **raiz, int valor) { if ((*raiz)!=null) if (valor<((*raiz)->info)) BusquedaValorArbol(&((*raiz)->izq),valor); else if (valor>((*raiz)->info)) BusquedaValorArbol(&((*raiz)->der),valor); else cout << "El nodo existe\n"; else cout << "El nodo no se encuentra en el arbol\n";

78 GRACIAS POR SU ATENCIÓN HASTA LA PRÓXIMA CLASE

árbol como un conjunto de nodos y líneas

árbol como un conjunto de nodos y líneas ÁRBOLES CAPÍTULO 6 ÁRBOLES 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

Más detalles

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,

Más detalles

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA INSTITUTO POLITÉCNICO NACIONAL SECRETARIA ACADÉMICA DIRECCIÓN DE EDUCACIÓN SUPERIOR ESIME CULHUACAN NOMBRE ALUMNO: FECHA DIA MES AÑO INGENIERÍA EN COMPUTACIÓN ASIGNATURA 1. Objetivo Apellido paterno ESTRUCTURAS

Más detalles

ÁRBOLES GENERALES Y Y ESTRUCTURAS DE ÍNDICES DEFINICIONES Y REPRESENTACIONES DEFINICIONES Y REPRESENTACIONES. NOMENCLATURA SOBRE ÁRBOLES. DECLARACIÓN Y REPRESENTACIÓN.. CONSTRUCCIÓN.. ÁRBOLES 2-3-4. ÁRBOLES

Más detalles

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción Árbol binario Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción Un Árbol Binario es un conjunto finito de Elementos, de nombre Nodos de forma que: El Árbol Binario

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

Árboles Binarios Ordenados Árboles AVL

Árboles Binarios Ordenados Árboles AVL Árboles Binarios Ordenados Árboles AVL Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Recordatorio... Se acerca la fecha de la primera entrega

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

Capítulo 6. ÁRBOLES.

Capítulo 6. ÁRBOLES. 67 Capítulo 6. ÁRBOLES. 6.1 Árboles binarios. Un árbol binario es un conjunto finito de elementos, el cual está vacío o dividido en tres subconjuntos separados: El primer subconjunto contiene un elemento

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Arboles Binarios Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen et

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Características ARBOLES - CONCEPTOS Cada elemento del árbol se relaciona con cero o más elementos a quienes llama hijos. Si el árbol no

Más detalles

ÁRBOLES BINARIOS 2002. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny

ÁRBOLES BINARIOS 2002. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny ÁRBOLES BINRIOS 2002 GRUPO # 22 lumnos: guilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny ESTRUCTURS DE DTOS TEM 6 Estructuras de datos no lineales. Árboles binarios ÍNDICE 6.1. Introducción.

Más detalles

Arboles Binarios de Búsqueda

Arboles Binarios de Búsqueda Arboles Binarios de Búsqueda Algoritmos y Estructuras de Datos Departamento de Electricidad y Electrónica (UPV/EHU) Arboles Binarios de Búsqueda p.1/52 Arboles Binarios Arbol binario: árbol ordenado de

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Introducción al tema a. Formar grupos de 4 personas b. Tomar una hoja en blanco y una lapicera o lápiz c. En la hoja en blanco diseña un

Más detalles

Ing. Manuel Ramírez López ITESCA

Ing. Manuel Ramírez López ITESCA ANTOLOGÍA DE ESTRUCTURA DE DATOS 2 Ing. Manuel Ramírez López ITESCA Estructura de Datos Antología de la Materia 2 Instituto Tecnológico Superior de Cajeme Carretera Internacional Km. 2 Teléfono (644) 415

Más detalles

Estructuras de datos: Árboles binarios de

Estructuras de datos: Árboles binarios de Estructuras de datos: Árboles binarios de búsqueda, Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge santiago.jorge@udc.es Árboles binarios de búsqueda, Table of Contents

Más detalles

Estructuras de Datos Abstractas en Lenguaje Java

Estructuras de Datos Abstractas en Lenguaje Java Universidad de Santiago de Chile Facultad de Ingeniería Departamento de Ingeniería Industrial Estructuras de Datos Abstractas en Lenguaje Java Listas Enlazadas, Colas, Pilas y Árboles Binarios Creado por

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

ESTRUCTURAS DE DATOS ÁRBOLES 143

ESTRUCTURAS DE DATOS ÁRBOLES 143 ESTRUCTURAS DE DATOS ÁRBOLES 143 TEMA 4. ÁRBOLES 4.1. CONCEPTOS GENERALES. Un árbol es una estructura de datos ramificada (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí

Más detalles

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios Temario 5.1 Árboles Binarios 5.2 Árboles n-arios Especificación Utilización Representación Enlazada 5.3 Árboles Binarios de Búsqueda 5.4 Árboles Parcialmente Ordenados 1 Árbol n-ario: O bien es el conjunto

Más detalles

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales Estructura de Datos TDA: Listas Prof. Mauricio Solar Prof. Lorna Figueroa Parte del material fue obtenido de Lic. Claudio Barúa Primer Semestre, 2010 Indice Tipos de estructura de datos lineales Listas

Más detalles

Tema 10- Representación Jerárquica: Tema 10- Representación Jerárquica: Árboles Binarios

Tema 10- Representación Jerárquica: Tema 10- Representación Jerárquica: Árboles Binarios Tema 10- Representación Jerárquica: Árboles Binarios Tema 10- Representación Jerárquica: Árboles Binarios Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia

Más detalles

Notas de Clase. Prof. Juan Andrés Colmenares, M.Sc. Instituto de Cálculo Aplicado Facultad de Ingeniería Universidad del Zulia. 21 de febrero de 2004

Notas de Clase. Prof. Juan Andrés Colmenares, M.Sc. Instituto de Cálculo Aplicado Facultad de Ingeniería Universidad del Zulia. 21 de febrero de 2004 Árboles Notas de Clase Prof. Juan Andrés Colmenares, M.Sc. Instituto de Cálculo Aplicado Facultad de Ingeniería Universidad del Zulia 21 de febrero de 2004 Índice 1. Definición 1 2. Términos Básicos 2

Más detalles

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS TEMA 4. - La Estructura de datos Árbol 4.1. Árboles, definiciones 4.2 Árboles binarios y su representación 4.3 Operaciones básicas de un árbol binario

Más detalles

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda Árboles Árboles Mario Medina C. mariomedina@udec.cl Árboles Estructura recursiva Árbol vacío 0 o más árboles hijos Altura ilimitada Árbol binario A lo más dos hijos: izquierdo y derecho Árboles Árboles

Más detalles

Árboles balanceados. Alonso Ramírez Manzanares Computación y Algoritmos 28.04.2015 1. Thursday, April 30, 15

Árboles balanceados. Alonso Ramírez Manzanares Computación y Algoritmos 28.04.2015 1. Thursday, April 30, 15 Árboles balanceados Alonso Ramírez Manzanares Computación y Algoritmos 28.04.2015 1 Árboles balanceados Los algoritmos en árboles binarios de búsqueda dan buenos resultados en el caso promedio pero el

Más detalles

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo

Más detalles

Árboles binarios de búsqueda

Árboles binarios de búsqueda Clase 27 Árboles binarios de búsqueda Árboles binarios de búsqueda En la clase anterior, definimos el concepto de árbol binario de búsqueda como un árbol binario de nodos que contienen una clave ordenada

Más detalles

Ampliación de Estructuras de Datos

Ampliación de Estructuras de Datos Ampliación de Estructuras de Datos Amalia Duch Barcelona, marzo de 2007 Índice 1. Diccionarios implementados con árboles binarios de búsqueda 1 2. TAD Cola de Prioridad 4 3. Heapsort 8 1. Diccionarios

Más detalles

14. ÁRBOLES. 14.1 Fundamentos y terminología básica

14. ÁRBOLES. 14.1 Fundamentos y terminología básica Ricardo Ferrís / Jesús Albert Algoritmos y estructuras de datos I 14. ÁRBOLES 14.1 FUNDAMENTOS Y TERMINOLOGÍA BÁSICA... 79 14.2. ÁRBOLES BINARIOS... 81 14.3. FUNDAMENTOS... 82 14.3. OPERACIONES CON ÁRBOLES

Más detalles

Clase 32: Árbol balanceado AVL

Clase 32: Árbol balanceado AVL Clase 32: Árbol balanceado AVL http://computacion.cs.cinvestav.mx/~efranco @efranco_escom efranco.docencia@gmail.com (Prof. Edgardo A. Franco) 1 Contenido Problema de los árboles binarios de búsqueda Variantes

Más detalles

Árboles AVL. Laboratorio de Programación II

Árboles AVL. Laboratorio de Programación II Árboles AVL Laboratorio de Programación II Definición Un árbol AVL es un árbol binario de búsqueda que cumple con la condición de que la diferencia entre las alturas de los subárboles de cada uno de sus

Más detalles

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO 1.- Objetivos del laboratorio Diseño de clases en C++ Comprensión y uso del TAD Árbol Binario de Búsqueda

Más detalles

Estructuras de Datos en Java

Estructuras de Datos en Java Estructuras de Datos en Java 1. Antecedentes Introducción a la Orientación a Objetos La programación orientada a objetos (POO) es una nueva manera de enfocar la programación. Desde sus comienzos, la programación

Más detalles

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista:

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista: Tipos Abstractos de Datos: TAD Lista en educación Profesional 1.- Introducción Los tipos abstractos de datos son fundamentales para la informática puesto que de ellos se sirven todos los programas para

Más detalles

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof.

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof. Árboles Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof. Paula Echenique Una de las estructuras de datos más importantes

Más detalles

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

Registro (record): es la unidad básica de acceso y manipulación de la base de datos. UNIDAD II 1. Modelos de Bases de Datos. Modelo de Red. Representan las entidades en forma de nodos de un grafo y las asociaciones o interrelaciones entre estas, mediante los arcos que unen a dichos nodos.

Más detalles

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación. Descripción de la semántica de ALFA En esta descripción sólo se mencionarán los aspectos en los que el lenguaje de programación ALFA pueda diferir de otros lenguajes de programación de alto nivel. Se sobreentienden

Más detalles

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad: El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un

Más detalles

Árboles binarios de búsqueda ( BST )

Árboles binarios de búsqueda ( BST ) Árboles binarios de búsqueda ( BST ) mat-151 Alonso Ramírez Manzanares Computación y Algoritmos 24.04.2015 Arbol Binario de Búsqueda Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol

Más detalles

Tema 14: ÁRBOLES Algoritmos y estructuras de datos I - Tema 14 1

Tema 14: ÁRBOLES Algoritmos y estructuras de datos I - Tema 14 1 Tema 14: ÁRBOLES Estructura Árbol Definición: Una estructura de árbol con tipo base Valor es: (i) Bien la estructura vacía. (ii) Un conjunto finito de uno o más nodos, tal que existe un nodo especial,

Más detalles

Árboles de Búsqueda Binaria. Agustín J. González ELO-320: Estructura de Datos y Algoritmos

Árboles de Búsqueda Binaria. Agustín J. González ELO-320: Estructura de Datos y Algoritmos Árboles de Búsqueda Binaria Agustín J. González ELO-320: Estructura de Datos y Algoritmos 1 Introducción Los árboles de búsqueda son estructuras de datos que soportan las siguientes operaciones de conjuntos

Más detalles

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica TEMA 3. Árboles Objetivos En este tema se estudia una de las estructuras de datos no lineal más importante en computación, el árbol. Comenzaremos introduciendo la terminología asociada a los árboles y

Más detalles

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1).

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1). ÁRBOL BINARIO - Un árbol binario puede definirse como un árbol que en cada nodo puede tener como mucho grado 2, es decir, a lo más 2 hijos. Los hijos suelen denominarse hijo a la izquierda e hijo a la

Más detalles

Estructura de datos Tema 6: Tablas de dispersión (hashing)

Estructura de datos Tema 6: Tablas de dispersión (hashing) Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 6: Tablas de dispersión (hashing) Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Funciones hash

Más detalles

Instituto de Computación - Facultad de Ingeniería - Universidad de la República

Instituto de Computación - Facultad de Ingeniería - Universidad de la República Parcial de Programación 2 Julio de 2011 Generalidades: La prueba es individual y sin material. Duración: 3hs. Sólo se contestan dudas acerca de la letra de los ejercicios. Escriba las hojas de un sólo

Más detalles

Análisis amortizado El plan:

Análisis amortizado El plan: Análisis amortizado El plan: Conceptos básicos: Método agregado Método contable Método potencial Primer ejemplo: análisis de tablas hash dinámicas Montículos agregables (binomiales y de Fibonacci) Estructuras

Más detalles

Listas, Pilas, Colas y Punteros. Semana 3

Listas, Pilas, Colas y Punteros. Semana 3 Listas, Pilas, Colas y Punteros Semana 3 Dictado por Marco González Núñez 14 de Febrero de 2011 Estructuras de datos simples Hoy hablaremos de lo que sin duda me motivó a crear este curso que son los punteros,

Más detalles

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 3: El TAD Lista lineal Prof. Montserrat Serrano Montero ÍNDICE El TAD lista lineal Implementación con estructuras

Más detalles

MANUAL DE USUARIO: Simulador ArbolBinarioBusqueda

MANUAL DE USUARIO: Simulador ArbolBinarioBusqueda<T> MANUAL DE USUARIO: Simulador ArbolBinarioBusqueda Descripción General El presente Manual de usuario pretende describir en detalle el conjunto de funcionalidades de la Aplicación desarrollada para la

Más detalles

Almacenamiento y Recuperación de la Información

Almacenamiento y Recuperación de la Información Almacenamiento y Recuperación de la Información Estructuras basicas de archivos Archivos Secuenciales 2do Semestre 2005 Wenceslao Palma M. www.inf.utfsm.cl/~wpalma/ari Una estructura

Más detalles

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE Contenidos 1. Introducción 2. El operador NEW 3. El operador DELETE 1 Introducción Hasta ahora hemos visto que cada vez que queremos usar una variable debemos reservarle un lugar de la memoria al comenzar

Más detalles

Estructura de datos y de la información Boletín de problemas - Tema 10

Estructura de datos y de la información Boletín de problemas - Tema 10 Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico

Más detalles

3. ESTRUCTURAS DE DATOS NO LINEALES

3. ESTRUCTURAS DE DATOS NO LINEALES 3. ESTRUCTURAS DE DATOS NO LINEALES 3.1 Conjuntos 3.2 Árboles 3.3 Grafos 1 3.1 Conjuntos Índice Introducción Especificación del TAD TipoConjunto Implementaciones del TAD TipoConjunto Programación usando

Más detalles

VI Colas de prioridad

VI Colas de prioridad VI Colas de prioridad Una cola de prioridad (cat: cua de prioritat; ing: priority queue) es una colección de elementos donde cada elemento tiene asociado un valor susceptible de ordenación denominado prioridad.

Más detalles

TAD Lineales: Pila, Cola y Lista

TAD Lineales: Pila, Cola y Lista TAD Lineales: Pila, Cola y Lista Objetivos! Dar a conocer los TAD lineales pila, cola y lista! Presentar la especificación de cada uno de los TAD! Discutir implementaciones alternativas para cada uno de

Más detalles

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Introducción Un árbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos. A B C D E F G H I J K Clasificación con respecto a su relación: Nodo hijo: cualquiera de los nodos

Más detalles

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008 INTRODUCCIÓN Estructura de Datos Tipos Abstractos de Datos (TAD S) Para poder obtener un programa que resuelva un problema dado, son necesarios varios pasos : La formulación y especificación del problema

Más detalles

Instituto Politécnico Nacional

Instituto Politécnico Nacional Instituto Politécnico Nacional Secretaria Académica Dirección de Estudios Profesionales Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Culhuacan Ingeniería en Comunicaciones y Electrónica Academia

Más detalles

Primer Parcial de Programación 3 (1/10/2009)

Primer Parcial de Programación 3 (1/10/2009) Primer Parcial de Programación (/0/009) Instituto de Computación, Facultad de Ingeniería Este parcial dura horas y contiene carillas. El total de puntos es 0. En los enunciados llamamos C* a la extensión

Más detalles

ESTRUCTURA DE DATOS: ARREGLOS

ESTRUCTURA DE DATOS: ARREGLOS ESTRUCTURA DE DATOS: ARREGLOS 1. Introduccion 2. Arreglos - Concepto - Caracteristicas 3. Arreglos Unidimensionales 4. Arreglos Bidimensionales 5. Ventajas del uso de arreglos 6. Ejemplo 1. Introducción

Más detalles

Programación Genética

Programación Genética Programación Genética Programación Genética consiste en la evolución automática de programas usando ideas basadas en la selección natural (Darwin). No sólo se ha utilizado para generar programas, sino

Más detalles

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010 Estructura de Datos Árboles Binarios de Búsqueda ABB Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 20 1 Arboles de Búsqueda Binaria El árbol binario de búsqueda (ABB) toma su nombre del

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 2 de septiembre de 2015 Se debe disponer sobre la mesa en lugar visible un documento

Más detalles

Capítulo 12: Indexación y asociación

Capítulo 12: Indexación y asociación Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación

Más detalles

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol Árboles Las listas enlazadas, pilas y colas son estructuras de datos lineales (es decir, secuencias). Un árbol es una estructura de datos bidimensional no lineal, con propiedades especiales. Los nodos

Más detalles

personal.us.es/elisacamol Elisa Cañete Molero Curso 2011/12

personal.us.es/elisacamol Elisa Cañete Molero Curso 2011/12 Teoría de conjuntos. Teoría de Conjuntos. personal.us.es/elisacamol Curso 2011/12 Teoría de Conjuntos. Teoría de conjuntos. Noción intuitiva de conjunto. Propiedades. Un conjunto es la reunión en un todo

Más detalles

PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS

PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS INSTITUTO POLITÉCNICO NACIONAL SECRETARIA ACADÉMICA DIRECCIÓN DE EDUCACIÓN SUPERIOR ESIME CULHUACAN NOMBRE ALUMNO: 1. Objetivo PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS El alumno comprenderá y aplicara

Más detalles

Capítulo V Operaciones Booleanas

Capítulo V Operaciones Booleanas 85 Capítulo V Operaciones Booleanas 5.1 Introducción Es muy posible que en muchos casos sea necesario comparar dos objetos y determinar cuál es su parte común. Esto implica intersectar los dos objetos

Más detalles

Arreglos. // Incluir E/S y Librerías Standard #include #include

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h> Arreglos Introducción. En los temas anteriores se han estudiado los diferentes tipos de datos simples de C++, usados para representar valores simples como enteros, reales o caracteres. Sin embargo, en

Más detalles

CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo. La estructura sería:

CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo. La estructura sería: CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo La estructura sería: typedef struct s_cola ELEM elementos[max]; int primero,ultimo; STRUCTCOLA,*COLA;

Más detalles

Metodología de la Programación II. Recursividad

Metodología de la Programación II. Recursividad Metodología de la Programación II Recursividad Objetivos Entender el concepto de recursividad. Conocer los fundamentos del diseño de algoritmos recursivos. Comprender la ejecución de algoritmos recursivos.

Más detalles

ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria

ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria ESTRUCTURA DE DATOS ABB Arboles de Búsqueda Binaria ÁRBOLES BINARIOS Hasta ahora nos hemos dedicado a estudiar TAD que de una u otra forma eran de naturaleza lineal, o unidimensional. En los tipos abstractos

Más detalles

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 14-O Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura

Más detalles

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL BLACKJACK Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones 1. Explicación del juego de cartas del Blackjack El Blackjack

Más detalles

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2 324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:

Más detalles

Tema 10: Árbol binario de búsqueda

Tema 10: Árbol binario de búsqueda Tema 10: Árbol binario de búsqueda M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Árbol binario de

Más detalles

Ejemplos de TAD (tipos simples)

Ejemplos de TAD (tipos simples) ESPECIFICACIÓN BOOLEANOS TAD booleano Ejemplos de TAD (tipos simples) T : booleano { valor cierto } F : booleano { valor falso } : booleano booleano : booleano, booleano booleano : booleano, booleano booleano

Más detalles

Apuntes de Matemática Discreta 7. Relaciones de Orden

Apuntes de Matemática Discreta 7. Relaciones de Orden Apuntes de Matemática Discreta 7. Relaciones de Orden Francisco José González Gutiérrez Cádiz, Octubre de 2004 Universidad de Cádiz Departamento de Matemáticas ii Lección 7 Relaciones de Orden Contenido

Más detalles

Definición de árbol. Árboles

Definición de árbol. Árboles ÁRBOLES Árboles * Definición de árbol * Formas de representación * Nomenclatura sobre árboles * Árboles binarios * Declaración de árbol binario * Recorridos sobre árboles binarios * Construcción de un

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

GRAFOS. Prof. Ing. M.Sc. Fulbia Torres

GRAFOS. Prof. Ing. M.Sc. Fulbia Torres ESTRUCTURAS DE DATOS 2006 Prof. DEFINICIÓN Un grafo consta de un conjunto de nodos(o vértices) y un conjunto de arcos (o aristas). Cada arco de un grafo se especifica mediante un par de nodos. Denotemos

Más detalles

4 ÁRBOLES. ÁRBOLES BINARIOS.

4 ÁRBOLES. ÁRBOLES BINARIOS. 4 ÁRBOLES. ÁRBOLES BINARIOS. Hasta ahora nos hemos dedicado a estudiar TADes que de una u otra forma eran de naturaleza lineal, o unidimensional. En los tipos abstractos de datos lineales existen exactamente

Más detalles

Reconocímíentes y Agradecimientos 5 Indice 6 Prólogo 11

Reconocímíentes y Agradecimientos 5 Indice 6 Prólogo 11 índice Reconocímíentes y Agradecimientos 5 Indice 6 Prólogo 11 Capítulo 1: Introducción a c/e++ Introducción a C/C++ 13 Introducción 14 Primeros Pasos en C/C++ 15 Mi Primer Programa 15 Bibliotecas 17 Archivos

Más detalles

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones Contenidos 1. Justificación del uso de funciones. 2. Declaración de funciones: prototipos. 3. Prototipos y ficheros de cabecera. 4. Polimorfismo (sobrecarga de funciones). 5. Argumentos formales y actuales.

Más detalles

Definición: NODO Un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar.

Definición: NODO Un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar. Definición: ÁRBOL El árbol es como un tipo de grafo cíclico, conexo y no dirigido. Las estructuras tipo árbol se usan principalmente para representar datos con una relación jerárquica entre sus elementos.

Más detalles

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Arboles AA. Kenneth Sanchez y Tamara Moscoso 8 de octubre del 2015

Arboles AA. Kenneth Sanchez y Tamara Moscoso 8 de octubre del 2015 Arboles AA Kenneth Sanchez y Tamara Moscoso 8 de octubre del 2015 Abstract En la industria comercial, durante mucho tiempo se han pasado por alto metodos de ordenamiento con una eficiencia buena y en su

Más detalles

Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos

Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos Santiago Zanella 2008 1 Introducción Para ciertas aplicaciones se requiere mantener n elementos distintos agrupándolos en una colección

Más detalles

Algoritmos sobre Grafos

Algoritmos sobre Grafos Sexta Sesión 27 de febrero de 2010 Contenido Deniciones 1 Deniciones 2 3 4 Deniciones sobre Grafos Par de una lista de nodos y una lista de enlaces, denidos a su vez como pares del conjunto de nodos.

Más detalles

Estructuras de Datos Dinámicas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas

Estructuras de Datos Dinámicas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas Fundación Misión Sucre Colegio Universitario de Caracas Taller 3: Estructuras de Datos Dinámicas Objetivo Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas Contenido

Más detalles

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria. Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea

Más detalles

Tema 10. Árboles. José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía

Tema 10. Árboles.  José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía Tema 10. Árboles http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat

Más detalles

Estructura de datos. Temario General

Estructura de datos. Temario General Estructura de datos. Objetivo Otorgar al participante el conocimiento, la habilidad y la aptitud para: comprender y manejar las representaciones más utilizadas para el procesamiento de información en sistemas

Más detalles

Francisco J. Hernández López

Francisco J. Hernández López rancisco. Hernández ópez fcoj23@cimat.mx structura de datos no lineal, en la que cada elemento sólo puede estar enlazado con su predecesor (o nodo padre) y sus sucesores (o nodos hijos) xiste un único

Más detalles

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante) 1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los

Más detalles

Estructuras de Datos y Algoritmos. Árboles de Expresión

Estructuras de Datos y Algoritmos. Árboles de Expresión Estructuras de Datos y Algoritmos Árboles de Expresión Año 2014 Introducción Los avances tecnológicos producen día a día una gran cantidad de información que debe ser almacenada y procesada en forma eficiente.

Más detalles

1 Agencia de viajes: enunciado

1 Agencia de viajes: enunciado 1 AGENCIA DE VIAJES: ENUNCIADO 1 1 Agencia de viajes: enunciado Una agencia de viajes mantiene una base de datos con exactamente N clientes y M destinos turísticos. En una situación real, estos valores

Más detalles