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