Práctica 3 Implementación y uso del TAD Árbol Binario de Búsqueda

Anuncio
ALGORITMOS Y ESTRUCTURAS DE DATOS II
Ingeniería Técnica en Informática de Gestión
Ingeniería Técnica en Informática de Sistemas
CURSO 2003/04
Práctica 3
Implementación y uso del
TAD Árbol Binario de Búsqueda
Objetivos
§
§
Afianzar los conocimientos adquiridos sobre árboles binarios de búsqueda (ABB)
Utilizar la especificación de un TAD en la resolución de otros problemas
Enunciado
Implementar en Pascal el tipo ABB estudiado en clase. Dicha implementación hace uso del tipo NodoB
que, en este caso, almacenará valores de tipo entero.
Una vez implementado el TAD ABB, solucionar los siguientes problemas:
1. Escribir una acción que tome como entrada un árbol binario de búsqueda y dos números
enteros k1 y k2, tal que k1 £ k2 y visualice en orden todos los elementos x del árbol tal que
k 1 £ x £ k 2.
2. Escribir una acción llamada antecesor que visualice los antecesores de un entero en un árbol
binario de búsqueda. Suponer que el número se encuentra en el árbol.
3. Escribir una función booleana que dado un árbol binario de búsqueda, indique si es o no AVL.
Descripción de los TAD
TAD TNodoB
El TAD Tnodo se implementará con la clase NodoB, formada por tres atributos:
· Elemento (entero)
· Izquierdo, derecho (punteros a NodoB)
y con los métodos siguientes:
constructor creaNodoB(e: Elemento; izq, der: PtrNodoB);
acción setElemento(e: Elemento);
acción setIzq(pizq: PtrNodoB);
acción setDer(pder: PtrNodoB);
función getElemento: Elemento;
función getIzq: PtrNodoB;
función getDer: PtrNodoB;
TAD TABB
El TAD TABB se implementará con la clase ABB, formada por un único atributo, raíz, que es un puntero
a un NodoB, y por los métodos siguientes:
constructor creaVacío;
acción inserta (e: elemento);
función busca (e: elemento): booleano;
función mínimo: elemento;
función máximo: elemento;
acción elimina (e: elemento);
función observaRaíz: elemento
acción subIzq (var ai: abb)
acción subDer (var ad: abb)
función esVacío: booleano
función altura (a: abb): entero
destructor libera;
Es necesario añadir también el siguiente constructor privado:
constructor creaÁrbol(p: ptrNodoB);
Evaluación de la práctica
La evaluación de esta práctica consistirá en la entrega de la documentación de la especificación semiformal de los 3 algoritmos solicitados, así como el código, documentados y bien estructurados, de
dichos algoritmos.
Tiempo estimado de realización
Los grupos del martes y miércoles entregarán la práctica los días 13 y 14 de enero, respectivamente
Los grupos del lunes entregarán la práctica el día 19 de enero
Pensad que el código de los métodos están hechos en clase. Sólo tenéis que codificar los 3
ejercicios
Descargar