#include #include #include "mapa.h" #include "arvore.h" void debug_troca_chave(Mapa *m, int original, int nova); int dados (int chave) { /* inventa dados associados a uma chave */ return 2*chave; } Mapa *preenche(Mapa *m, int inicio, int fim) { int meio, chave; if(inicio > fim) return m; meio = (fim + inicio)/2; chave = meio * 10; m = insere(m, chave, dados(chave)); m = preenche(m, inicio, meio-1); m = preenche(m, meio+1, fim); return m; } int main(int argc, char **argv) { int res, tammapa; tammapa = 10; Mapa *m1 = cria(); Mapa *m2 = cria(); /* preenchendo arvores */ m1 = preenche (m1, 0, tammapa-1); printf("arvore m1 ok\n"); mostra(m1); m2 = preenche(m2, 0, tammapa-1); /* mostra chaves decrescentes */ printf("\n\nchaves decrescentes: "); mostra_chaves_decrescentes(m1); /* procura a quinta menor chave */ res = chavek(m1, 5); printf("\nquinta menor chave: %d -> %s\n", res, (res == 40)? "OK" : "NAO OK"); /* procura a vigesima menor chave */ res = chavek(m1, 20); printf("vigesima menor chave: %d -> %s\n", res, (res == -1)? "OK" : "NAO OK"); /* verifica se a arvore e abb */ res = e_abb(m1); printf("\narvore m1 e abb? %s -> %s\n", (res)? "SIM" : "NAO", (res)? "OK" : "NAO OK"); /* interfere na arvore m1 */ debug_troca_chave(m1, 80, 65); printf("\narvore m1 nao ok ------------ \n"); mostra(m1); res = e_abb(m1); printf("\narvore m1 e abb? %s -> %s\n", (res)? "SIM" : "NAO", (!res)? "OK" : "NAO OK"); /* interfere na arvore m2 */ debug_troca_chave(m2, 30, 45); printf("\narvore m2 nao ok ------------ \n"); mostra(m2); res = e_abb(m2); printf("\narvore m2 e abb? %s -> %s\n", (res)? "SIM" : "NAO", (!res)? "OK" : "NAO OK"); destroi(m1); destroi(m2); return 0; }