void imprimirArvore(tree *arv) { //Pre Ordem if(NULL != arv) { printf("(%c", arv->dado); if(arv->esq != NULL) { // go deep on left size imprimirArvore(arv->esq); } else { printf("(_)"); } if(arv->dir != NULL) { // go deep on right size imprimirArvore(arv->dir); } else { printf("(_)"); } printf(")"); } }
int main() { tree *arvore = criaVazia(); //arvore = criaNo('M', criaNo('H', criaNo('E', criaNo('C', criaNo('A', criaVazia(), criaVazia()),criaNo('D', criaVazia(), criaVazia())), criaNo('G', criaVazia(), criaVazia())), criaNo('K', criaVazia(), criaNo('L', criaVazia(), criaVazia()))), criaNo('R', criaNo('O', criaNo('N', criaVazia(), criaVazia()), criaVazia()), criaNo('T', criaVazia(), criaVazia()))); /* AROVRE */ arvore = insereArv(arvore, 'M'); arvore = insereArv(arvore, 'R'); arvore = insereArv(arvore, 'H'); arvore = insereArv(arvore, 'O'); arvore = insereArv(arvore, 'K'); arvore = insereArv(arvore, 'T'); arvore = insereArv(arvore, 'E'); arvore = insereArv(arvore, 'L'); arvore = insereArv(arvore, 'G'); arvore = insereArv(arvore, 'N'); arvore = insereArv(arvore, 'C'); arvore = insereArv(arvore, 'D'); arvore = insereArv(arvore, 'A'); /* AROVRE */ imprimirArvore(arvore); printf("\n(M(H(E(C(A(_)(_))(D(_)(_)))(G(_)(_)))(K(_)(L(_)(_))))(R(O(N(_)(_))(_))(T(_)(_))))\n"); printf("\n%d\n%d", 'H', 'X'); printf("\nPertence H na arvore = %d", pertence(arvore, 'H')); printf("\nPertence X na arvore = %d\n", pertence(arvore, 'X')); /*tree *arvoreBusca = criaVazia(); arvoreBusca = busca(arvore, 'C'); imprimirArvore(arvoreBusca);*/ /*arvore = removeArv(arvore, 'D'); arvore = removeArv(arvore, 'K'); arvore = removeArv(arvore, 'O');*/ arvore = removeArv(arvore, 'M'); imprimirArvore(arvore); return 0; }
/*! * \brief imprimirArvore Imprime a árvore binária * * Imprime a árvore binária, mostrando os nós a direita e a esquerda * de uma visualização em ordem da mesma * Obs.: A sequência nil indica a falta de próximo nó * * \param a Árvore a ser impressa */ void imprimirArvore(noArvoreInt *a){ if(a){ imprimirArvore(a->no_esq); if((a->no_esq == NULL) && (a->no_dir == NULL)) printf("chave: %d fesq: nil fdir: nil\n", a->chave); else if((a->no_esq == NULL) || (a->no_dir == NULL)) if((a->no_esq == NULL)) printf("chave: %d fesq: nil fdir: %d\n", a->chave, a->no_dir->chave); else printf("chave: %d fesq: %d fdir: nil\n", a->chave, a->no_esq->chave); else printf("chave: %d fesq: %d fdir: %d\n", a->chave, a->no_esq->chave, a->no_dir->chave); imprimirArvore(a->no_dir); } }
void menuImpressaoArvore(){ int opcao; imprimirOpcoes(3); scanf("%d", &opcao); switch(opcao){ case 1: if(arvore.topo == NULL){ printf("Arvore vazia!\n"); } else { imprimirArvore(arvore.topo); } break; default: printf("Opcao Invalida\n\n"); } }
/* * Escopo principal do programa */ int main(void){ ArvoreInt a; int x; char opcao[14]; inicializa(&a); do{ x = 0; scanf(" %[^\n]s", opcao); if((opcao[0] != 'l') && (opcao[0] != 'p')) stringParaInt(opcao, &x); switch(opcao[0]){ case 'i':insere(&a, x); break; /* Insere Chave */ case 'c':consultarChave(&a, x); break; /* Consulta Chave */ case 'r':retira(&a, x); break; /* Remove Chave */ case 'p':listarTodasChavesEmOrdem(&a, opcao[2]); break; /* Lista todas as chaves dos nós da árvore */ case 'n':listarChavesDoNivel(a, 1, x); break; /* Lista chaves de um determinado nível da árvore */ case 'd':imprimirArvore(a); break; /* Imprime a árvore */ } }while(opcao[0] != 'e'); return 0; }