Primer punto (40 puntos)

Anuncio
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
Descargar