programação
#include
#include struct arv
{
char info[30]; struct arv *dir; struct arv *esq;
};
struct arv *constroi (void); void preordem (struct arv *no); void posordem (struct arv *no); void ordeminter (struct arv *no); void destroi (struct arv *no); void mostra (struct arv *no, int nivel); int menu (void); void escreve (char *s); main ()
{
struct arv *ARVORE = NULL; int escolha; do { escolha = menu (); switch (escolha) { case 0: puts ("Constroi arvore\n\r"); destroi (ARVORE); ARVORE = constroi (); break; case 1: puts ("Pre'-ordem\n\r"); preordem (ARVORE); break; case 2: puts ("Pos ordem\n\r"); posordem (ARVORE); break; case 3: puts ("Ordem intermediaria\n\r"); ordeminter (ARVORE); break; case 4: puts ("Mostra arvore\n\r"); mostra (ARVORE, 0); break; } puts ("\n\nDigite qualquer tecla..."); getchar (); } while (escolha != 5); destroi (ARVORE);
}
int menu (void)
{
int opcao; system("cls"); puts ("Opcoes:"); puts ("-------"); puts ("0. Constroi arvore"); puts ("1. Mostra arvore em Pre'-ordem"); puts ("2. Mostra arvore em Pos-ordem"); puts ("3. Mostra arvore em Ordem-intermediaria"); puts ("4. Desenha a arvore"); puts ("5. Fim de operacoes\n\n");
do { printf ("Escolha [0,1,2,3,4 ou 5]: "); opcao = getchar () - 48; getchar (); puts ("\n\n"); } while ((opcao < 0) && (opcao > 5)); return opcao;
}
struct arv * constroi (void)
{
struct arv *no; char auxstr[30]; fgets (auxstr, 29, stdin); auxstr[strlen (auxstr) - 1] = '\0'; if (strcmp (auxstr, ".") == 0) return NULL; else { no = (struct arv*) malloc (sizeof (struct arv)); strcpy (no->info,