El árbol de animales

En esta sección desarrollaremos un pequeño programa que usa un árbol para
representar una base de conocimientos.

El programa interactúa con el usuario para crear un árbol de preguntas y nombres de animales. Aquí tenemos un ejemplo de ejecución:

Este es el árbol que construye este diálogo:

Al principio de cada ronda, el programa empieza en lo alto del árbol y hace la primera pregunta. Dependiendo de la respuesta, se mueve al hijo de la izquierda o de la derecha y sigue hasta que llega a un nodo hoja. En ese momento, intenta adivinar. Si falla, pide al usuario el nombre del nuevo animal y una pregunta que distinga al intento fallido del nuevo animal. Entonces añade un nodo al árbol con la nueva pregunta y el nuevo animal.

Éste es el código:

La función si es un auxiliar; imprime un indicador y acepta una entrada del
usuario. Si la respuesta comienza con s o S, la función devuelve verdadero:

La condición del bucle externo es 1, lo que significa que seguirá hasta que se ejecute la sentencia break cuando el usuario ya no piense en ningún animal.

El bucle while interno recorre el árbol de arriba a abajo, guiado por las respuestas del usuario.

Cuando se añade un nuevo nodo al árbol, la pregunta sustituye a la carga y los dos hijos son el animal nuevo y la carga original.

Una carencia del programa es que, al salir, ¡olvida todo lo que usted le había enseñado con tanto cuidado!