Exemple #1
0
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(")");
	}
}
Exemple #2
0
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;
}
Exemple #3
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");
    }
}
Exemple #5
0
/*
 * 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;
}