Coloquei na seção de materiais um programa completo com o uso de demonstração de árvores binárias. É uma implementação do jogo "Animals" que comentei em sala, baseado no código de varredura que passei como exemplo.
O programa está dividido em módulos:
- queue - implementa uma fila
- stack - pilha
- tree - árvore
- teste - programa principal
Aém dos arquivos correspondentes (.c e .h), há o Makefile e um arquivo de entrada como exemplo (input).
O programa não está completamente testado e não foi colocado um tratamento de erros completo, em particular não sei o que acontece se o arquivo de entrada não for consistente (verifique e arrume).
Para usar, simplesmente rode:
teste entrada saída
entrada é opcional e corresponde a um arquivo texto que descreve a árvore a ser usada. Se não for indicado, será usada uma árvore padrão com um único nó ("gato").
saída também é opcional e se existir indica o nome de um arquivo onde a árvore final será gravada.
O formato do arquivo de descrição da árvore é texto, onde cada linha corresponde a um nó. O primeiro caractere da linha indica se é um nó interno ou folha. Nós internos são indicados por um ' ?' , folhas por qualquer outro caractere, minha sugestão é usar um ' .' para tornar a leitura mais fácil. Todos os nós internos da árvore devem ter dois filhos, obrigatóriamente, na ordem "sim", "não" das respostas. A árvore é colocada em pré ordem.
Alterem o programa, façam experiências, completem. Escrevam arquivos de entrada diferentes, possível, com algum conhecimento, fazer sistemas automáticos de diagnósticos com árvores adeqüadas (médico, carro, programas, projetos, etc).
Em suma, divirtam-se!