En este ejercicio tendréis que resolver un algoritmo de la práctica,
pero en vez de usar la clase BinTree programaréis el
algoritmo en la clase Arbre. No se puede llamar a las
operaciones de Arbre, sino que tenéis que programarlo
usando punteros.
El algoritmo crea, a partir de un árbol de salas y un conjunto de productos que se encuentran en el árbol, el subárbol menor de éste que incluya la raíz, y todos los productos del conjunto.
La cabecera y especificación son las siguientes:
/**
* @pre: El árbol (p.i.) está vacío. Los productos del set están todos
* en el árbol 'a'.
*
* @post: El árbol (p.i.) contiene el subárbol menor de 'a' que incluye todos
* los 'productos', incluyendo la raíz.
*/
void crear_subarbol(const Arbre& a, set<string>& productos);
(La declaración de crear_subarbol se encuentra al final
del fichero Arbre.hh.)
Los ficheros públicos (icono del gatito) incluyen un
.tar con main.cc, Arbre.hh,
Arbre-io.hh, y un Makefile. También se incluye
una copia de los juegos de prueba públicos. En la carpeta donde se
descompriman se puede: compilar con "make"; y testear con
"make test".
El main.cc ya se encarga de leer la entrada, crear el
subárbol y producir la salida. Para entregar, solo es necesario subir al
Jutge vuestro archivo Arbre.hh modificado.
Con el fin de programar la operación anterior, podríais necesitar
alguna operación privada y posiblemente static.
La entrada es una representación textual del árbol de salas de la
tienda, y una secuencia con el conjunto de productos que ha seleccionado
el usuario, tal como en la práctica. (Esto está ya implementado en
main.cc).
La salida es la representación textual del subárbol mínimo
encontrado. (Esto también está implementado en
main.cc.)
Input
futbol
|-- tenis
| |-- alimentacion
| '-- golf
'-- fitnes
|-- piscina
'-- hipica
futbol alimentacion #
Output
futbol |-- tenis | |-- alimentacion | '-- # '-- #
Input
zapatos
|-- piscina
| |-- futbol
| | |-- tenis
| | '-- basquet
| '-- alimentacion
'-- hipica
|-- golf
'-- fitnes
basquet alimentacion golf #
Output
zapatos
|-- piscina
| |-- futbol
| | |-- #
| | '-- basquet
| '-- alimentacion
'-- hipica
|-- golf
'-- #