Universidad del Cauca - FIET Ingeniería de Sistemas Estructuras de Datos II Segundo examen parcial Agosto de 2007 Primer punto (40 puntos) a) (20 puntos) Dibuje paso a paso (incluyendo rotaciones) el árbol AVL que se obtiene al realizar las siguientes inserciones: 10, 5, 61, 25, 35, 15, 70 Considere que inicialmente el árbol se encuentra vacío. 10 10 5 61 5 25 61 Izq-Der 25 35 10 Der - Izq 35 5 25 61 15 Izq 25 35 10 5 15 61 70 Universidad del Cauca - FIET Ingeniería de Sistemas Estructuras de Datos II Segundo examen parcial Agosto de 2007 25 61 10 5 b) 15 70 35 (20 puntos) Dibuje paso a paso (incluyendo cambios de color y rotaciones) el árbol Rojo-Negro que se obtiene al realizar las siguientes inserciones: 10, 5, 61, 25, 35, 15, 70, 17, 30 Considere que inicialmente el árbol se encuentra vacío. 10 5 10 61 5 61 25 10 5 10 61 25 5 61 25 35 Universidad del Cauca - FIET Ingeniería de Sistemas Estructuras de Datos II Segundo examen parcial Agosto de 2007 10 10 5 61 35 5 35 25 61 25 10 10 5 35 5 25 25 61 15 15 10 5 35 25 15 61 70 17 35 61 Universidad del Cauca - FIET Ingeniería de Sistemas Estructuras de Datos II Segundo examen parcial Agosto de 2007 10 5 35 25 61 17 70 15 10 5 35 17 15 61 30 10 5 35 17 15 70 25 61 70 25 30 Universidad del Cauca - FIET Ingeniería de Sistemas Estructuras de Datos II Segundo examen parcial Agosto de 2007 10 5 17 35 15 61 25 70 30 17 10 5 35 15 61 25 30 70 Segundo punto (60 puntos) a) (30 puntos) Dibuje paso a paso el árbol B de orden 3 que se obtiene al realizar las siguientes inserciones: 10, 5, 25, 1, 3, 8, 11, 20, 6, 7, 9, 15, 21, 23, 17 Considere que inicialmente el árbol se encuentra vacío. Universidad del Cauca - FIET Ingeniería de Sistemas Estructuras de Datos II Segundo examen parcial Agosto de 2007 5 10 25 10 5 10 25 5 1 10 5 1 3 25 1 25 10 5 25 3 1 3 10 5 8 25 11 20 10 3 1 20 8 5 25 11 6 10 3 1 5 20 6 7 8 9 11 25 Universidad del Cauca - FIET Ingeniería de Sistemas Estructuras de Datos II Segundo examen parcial Agosto de 2007 10 6 3 1 20 5 7 23 15 8 9 11 17 21 25 b) (30 puntos) Desarrolle un algoritmo para buscar un dato en un árbol B de orden n, suponiendo que los datos dentro de un nodo se almacenan en una lista simple enlazada. /* Buscar . Funcion para buscar un elemento en un arbol B. Parametros: a: Referencia a la raiz del arbol (nodo b) dato: Dato a buscar en el arbol */ buscar(a, dato) { baux = a /* Apuntador a la raiz del arbol (nodo b) */ ant = NULL /* Apuntador a la lista enlazada dentro del nodo b*/ encontrado=FALSE mientras baux != NULL and encontrado == FALSE /* Sacar el inicio de la lista de datos del nodo b*/ aux = baux->lista_datos ant = NULL /* Comparar el dato con el primero de la lista */ si dato == aux->dato encontrado=TRUE sino si dato < aux->dato /* Bajar al hijo izquierdo */ baux = aux->izq sino /* Recorrer la lista de datos */ ant = NULL mientras aux != NULL and aux->dato < dato ant = aux aux = aux->sig fin_mientras Universidad del Cauca - FIET Ingeniería de Sistemas Estructuras de Datos II Segundo examen parcial Agosto de 2007 si aux != NULL /* Se puede encontrar en este nodo b */ si dato == aux->dato /*Existe en este nodo? */ encontrado=TRUE sino baux = aux->izq fin_si sino /* No se encuentra en la lista de datos, bajar al hijo derecho */ si dato > ant->dato baux = ant->der fin_si fin_si fin_si fin_mientras retornar encontrado fin_algoritmo