Example #1
0
void posordem(arvore *aux){
	if(aux!=NULL){
		posordem(aux->esq);
		posordem(aux->dir);
		printf("%i ",aux->info);
	}
}//metodo de posordem
//IMPRIME PRIMEIRO OS DA ESQUERDA, DEPOIS OS DA DIREIRA, POR ULTIMO O PRIMEIRO NÓ.
 void posordem(NODE *apontno){
    if(apontno != NULL){
        posordem(apontno->esq); //IMPRIME <8
        posordem(apontno->dir); //IMPRIME >8
        printf("%d\t",apontno->dado); //IMPRIME =8
    }
 }
Example #3
0
void posordem(no *raiz) {								//faz a impressao depois de percorrer a arvore
    if(raiz != NULL) {									//verifica se o elemento existe
        posordem(raiz->esq);							//re-executa a função diminuindo os valores chave
        posordem(raiz->dir);							//re-executa a função aumentando os valores chave
        printf("%d ", raiz->chave);						//ou seja, imprimirá de baixo para cima, da esquerda para a direita
    }
}
Example #4
0
void posordem(no *arvore){
	if(arvore != NULL){
		posordem(arvore->esq);
		posordem(arvore->dir);
		printf("%d\n",arvore->chave);
	}
}
void posordem(no *raiz){ //função que imprime os valores da árvore em "posordem"
	if(raiz == NULL){
		return;
	}
	posordem(raiz->esq);
	posordem(raiz->dir);
	printf("%d ", raiz->chave);
	return;
}
Example #6
0
File: largura.c Project: privati/ED
void posordem(Arv *raiz)
{
    if (raiz != NULL)
    {
        posordem(raiz->esq);
        posordem(raiz->dir);
        printf("%d.", raiz->elem);
    }
}
void posordem(struct arvore*no)
{
	if(no!=NULL)
	{
		posordem(no->esq);
		posordem(no->dir);
		printf("%d\n", no->chave);
	}
}
/* A impressao Pos Ordem eh utilizada para a impressao da notacao RNP*/
posordem(struct arvore *lista)
{
	if(lista != NULL)
	{
		posordem(lista->esq);
		posordem(lista->dir);
		printf("%s ", lista->entrada);
	}
}
posordem(struct arvore *lista)//Imprime RPN
{
	if(lista != NULL)
	{
		posordem(lista->esquerda);
		posordem(lista->direita);
		printf("%s ", lista->entrada);
	}
}
/*FUNÇAO PARA DELETAR NÓS
void remover(NODE **pRaiz, int numero){
    NODE *pAux = NULL;
    if(numero < (*pRaiz)->dado)
        remover(&(*pRaiz)->esq, numero);
    else if (numero > (*pRaiz)->dado)
        remover(&(*pRaiz)->dir, numero);
    else{
        pAux = *pRaiz;
        if((*pRaiz)->esq == NULL)
            *pRaiz = (*pRaiz)->dir;
        else if((*pRaiz)->dir == NULL)
            *pRaiz = (*pRaiz)->esq;
    }
}
*/
 int main(){
    NODE *arvore = NULL;
    insert(&arvore,1);
    insert(&arvore,3);
    insert(&arvore,5);
    insert(&arvore,7);
    insert(&arvore,9);
    insert(&arvore,2);
    insert(&arvore,4);
    insert(&arvore,6);
    insert(&arvore,8);
    insert(&arvore,10);

    printf("EM ORDEM:");
    printf("\n");
    emordem(arvore);
    printf("\n\n");
    printf("PRE ORDEM:");
    printf("\n");
    preordem(arvore);
    printf("\n\n");
    printf("POS ORDEM:");
    printf("\n");
    posordem(arvore);
    printf("\n\n");
 }
int main()
{
	struct arvore *raiz = NULL;
	int i = 1, j = 1, k, escolha;
	char a[1], b[1];
	printf("Ola! Este programa ira converter uma entrada em notacao polonesa para a notacao polonesa reversa (RPN) e infixa.\n");
	printf("Digite sua equacao em notacao polonesa\n(separe os simbolos e numeros todos por um 'espaco' e depois tecle 'Enter'):\n");
	raiz = (struct arvore *)malloc(sizeof(struct arvore)); // cria a raiz
	raiz->esq = NULL; //aterra a raiz
	raiz->dir = NULL;
	scanf("%s", a);
	strcpy(raiz->entrada, a);
	scanf("%s", a);
	while(a[0] == 42 || a[0] == 43 || a[0] == 45 || a[0] == 47) //enquanto sao entrados sinais, cahama a funcao insertsign
	{
		insertsign(raiz, a);
		scanf("%s", a);
		i++;	
	} 
	insertnum(raiz, a, j, i); //quando sao inseridos numeros, passa a chamar a funcao insertnum
	for (j = 2; j < i + 2; j++)
	{
		scanf("%s", a);
		insertnum(raiz, a, j, i);
	}
	while (escolha != 3) //repete o menu ate que seja escolhida a opcao "sair"
	{
		printf("\n\nO que voce deseja fazer? Digite o numero correspondente!\n");
		printf("1 - Impressao na notacao polonesa reversa (RPN)\n2 - Impressao na notacao infixa\n3 - Sair\n\n");
		scanf("%d", &escolha);
		if (escolha > 3 || escolha <1) //caso seja escolhida uma opcao fora do menu, uma mensagem de erro eh impressa
		{
			printf("Favor entrar com uma das opcoes do menu.\n");
		}
		else
		{
			switch(escolha)
			{
				case 1:
					printf("\nPolonesa reversa:\n");
					posordem(raiz);
					break;
				case 2:
					printf("\nNotacao infixa:\n");	
					printf("(");
					emordem(raiz);
					printf(")");
			}
		}
	}
}
int main()
{
	struct arvore *raiz = NULL;
	int i = 1, j = 1, k, menu;
	char a[1], b[1];
	printf("Digite sua equacao em notacao polonesa separando os numeros e sinais por espaco e entao tecle Enter:\n");
	raiz = (struct arvore *)malloc(sizeof(struct arvore)); //aloca memoria para a raiz criada
	raiz->esquerda = NULL;
	raiz->direita = NULL;
	scanf("%s", a);
	strcpy(raiz->entrada, a);
	scanf("%s", a);
	while(a[0] == 42 || a[0] == 43 || a[0] == 45 || a[0] == 47) 
	{
		InserirSinal(raiz, a);
		scanf("%s", a);
		i++;	
	} 
	InserirNro(raiz, a, j, i); 
	for (j = 2; j < i + 2; j++)
	{
		scanf("%s", a);
		InserirNro(raiz, a, j, i);
	}
	while (menu != 3) //repete o menu ate que seja escolhida a opcao "sair"
	{
		printf("Digite 1 para imprimir em RPN, 2 para imprimir em notacao infixa e 3 para sair\n");
		scanf("%d", &menu);
		if (menu > 3 || menu <1) 
		{
			printf("Escolher uma opção válida para o menu:\n");
		}
		else
		{
			switch(menu)
			{
				case 1:
					printf("\nRPN:\n");
					posordem(raiz);
					break;
				case 2:
					printf("Infixa:\n");	
					emordem(raiz);
					break;
			}
		}
	}
}
void menu(no *raiz){
	int j = 1;
	int n, i;
	printf("Agora que voce ja selecionou os elementos da arvore,\nselecione o que deseja fazer: ");
	while(j!=0){
		printf("\n\n1 : Imprime a arvore em ordem\n2 : Imprime a arvore em preordem\n3 : Imprime a arvore em posordem\n");
		printf("4 : Imprime em Labelled Bracketing\n5 : Buscar um numero\n6 : Remover um numero\n7 : Inserir um numero\n");
		printf("8 : Sair\n");
		scanf("%d", &i);
		switch(i){  //para cada número que o usuário entrar o programa realizará um comando diferente
			case 1:
				ordem(raiz);
			break;
			case 2:
				preordem(raiz);
			break;
			case 3:
				posordem(raiz);
			break;
			case 4:
				lbracketing(raiz);
			break;
			case 5:
				printf("\nEscreva o elemento que deseja buscar: ");
				scanf("%d", &n);
				busca(&raiz, n);
			break;
			case 6:
				printf("\nEscreva o elemento que deseja remover, escreva um que esta na arvore! :");	
				scanf("%d", &n);
				remover(&raiz, n);
			break;
			case 7:
				printf("Digite o elemento que deseja inserir, digite um que nao esteja na arvore! :");
				scanf("%d", &n);
				inserir(&raiz, n);
			break;
			case 8:
				j=0;
			break;	
			default	:
				printf("Insira um valor válido!\n");
			break;		
								
		}
	}
	return;
}
Example #14
0
File: largura.c Project: privati/ED
int main ()
{

    Arv *a = NULL;
    int op;
    scanf("%d",&op);

    while(op != -1)
    {
        if(op == 1)
        {
            int elem;
            scanf("%d", &elem);
            a = inserir(a, elem);
        }
        else
        {
            int elem;
            scanf("%d", &elem);
            a = remover(a, elem);
        }

        scanf("%d",&op);
    }


    printf("Em largura: ");
    imprime_largura(a);

    printf("\nPre ordem: ");
    preordem(a);

    printf("\nEm ordem: ");
    emordem(a);

    printf("\nPos ordem: ");
    posordem(a);

    return 0;


}
Example #15
0
File: main.c Project: streeck/ed1
int main(){
	ARVORE_BINARIA arv1;

	criar(&arv1);

	NO *node;
	INFO item;

	item.chave = 1; 
	item.valor = '+';
	node = criar_raiz(&arv1, &item);

	item.chave = 2;
	item.valor = 'A';
	inserir_esquerda(node, &item);

	item.chave = 3;
	item.valor = '*';
	node = inserir_direita(node, &item);

	item.chave = 4;
	item.valor = 'B';
	inserir_esquerda(node, &item);

	item.chave = 5;
	item.valor = 'C';
	node = inserir_direita(node, &item);

	emordem(&arv1);
	printf("\n");

	preordem(&arv1);
	printf("\n");

	posordem(&arv1);
	printf("\n");

	return 0;
}
Example #16
0
main() {
    int i, a, b, c, d, e;									//variaveis auxiliares
    printf("Numero de Insercoes: ");
    scanf("%d", &a);										//recolhe o numero de elementos
    printf("Elementos: ");

    for(i=0; i<a; i++) {
        fflush;
        scanf("%d", &b);									//recolhe os elementos
        inserir(&raiz, b);								 	//faz a inserção na arvore
    }
    printf("\n--->  MENU  <---\n-> 1 para imprimir a arvore.");			//print do MENU
    printf("\n-> 2 para inserir elementos.");
    printf("\n-> 3 para remover elementos.");
    printf("\n-> 4 para buscar elementos.");
    printf("\n-> 0 para sair\n");
    fflush;
    scanf("%d", &c);

    while(c!=0) {														//codigo do MENU
        fflush;
        switch(c) {
        case 1:
            system("cls");
            printf("Pre Ordem:\n");
            preordem(raiz);
            printf("\nPos Ordem:\n");
            posordem(raiz);
            printf("\nEm Ordem:\n");
            emordem(raiz);
            printf("\nLabelled Bracketing:\n");
            lb(raiz);
            printf("\n");
            break;
        case 2:
            system("cls");
            printf("Novo elemento: ");
            scanf("%d", &d);
            inserir(&raiz, d);
            break;
        case 3:
            system("cls");
            printf("Elemento para remocao: ");
            scanf("%d", &d);
            remover(&raiz, d);
            break;
        case 4:
            system("cls");
            printf("Elemento para busca: ");
            scanf("%d", &d);
            e = busca(raiz, d);
            if(e==1) printf("\nO elemento %d nao existe na arvore.\n", d);
            if(e==2) printf("\nO elemento %d existe na arvore.\n", d);
            break;
        }
        printf("\n--->  MENU  <---\n-> 1 para imprimir a arvore.");
        printf("\n-> 2 para inserir elementos.");
        printf("\n-> 3 para remover elementos.");
        printf("\n-> 4 para buscar elementos.");
        printf("\n-> 0 para sair\n");
        fflush;
        scanf("%d", &c);
    }
}
Example #17
0
int main(void){
	arvore *raiz=NULL;

	int op,achou,num;

	do{
		printf("\nMENU");
		printf("\n1 - Insere na Arvore");
		printf("\n2 - Consultar um no da Arvore");
		printf("\n3 - Consultar toda Arvore em pre-ordem");
		printf("\n4 - Consultar toda Arvore em ordem");
		printf("\n5 - Consultar toda Arvore em pos-ordem");
		printf("\n6 - Excluir um no da Arvore");
		printf("\n7 - Esvaziar toda Arvore");
		printf("\n8 - Sair");
		printf("\nOpcao: ");
		scanf("%i",&op);

		if(op==1){
			
			printf("\nNumero a inserir na Arvore: ");
			scanf("%i",&num);
			raiz=insere(raiz,num);
			printf("\nNumero inserido!");
		}//opção insere

		if(op==2){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nNumero a ser consultado: ");
				scanf("%i",&num);
				achou=0;
				achou=consultar(raiz,num,achou);

				if(achou==1)
					printf("\nNumero existente na Arvore!");
				else
					printf("\nNumero nao existente na Arvore!");
			}
		}//opção busca numero

		if(op==3){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nListando em pre-ordem\n");
				preordem(raiz);
			}
		}//opçao listar preordem

		if(op==4){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nListando em ordem\n");
				emordem(raiz);
			}
		}//opçao listar em ordem

		if(op==5){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nListando em pos-ordem\n");
				posordem(raiz);
			}
		}//opçao listar pos ordem

		if(op==6){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nInforme o numero a ser removido: ");
				scanf("%i",&num);
				achou=0;
				achou=consultar(raiz,num,achou);
				//verifica se o nó existe
				if(achou==0)
					printf("\nNumero nao existente na Arvore!");
				else{
					raiz=remover(raiz,num);
					printf("\nNumero removido!");
				}
			}
		}//opçao remoção

		if(op==7){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				raiz=desalocar(raiz);
				printf("\nArvore desalocada!");
			}
		}//opçao desaloca

		printf("\n************************************************************\n");

		getc(stdin);
	}while(op>0 && op<9 && op!=8);

	return 0;
}
Example #18
0
int main(){
	int n,a,b;
	no *raiz, *aux;
	raiz = NULL;
	int opcao;

	while(opcao!=12){

		opcao = menu();
		switch(opcao){

			case 1:

			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("Digite -1 para terminar\n");
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			do{
				printf("Digite um numero: ");
				scanf("%d", &n);
				if(n!=-1){
					insere(n, &raiz);
				}
			}while (n!=-1);

                       //imprime(raiz,0);

			break;
			case 2:

			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("------> Pre-Ordem <------\n");
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			preordem(raiz);

			break;
			case 3:

			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("------> Em-Ordem <------\n");
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			emordem(raiz);

			break;
			case 4:

			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("------> Pos-Ordem <------\n");
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			posordem(raiz);

			break;
			case 5:

			consultarDetalhes(raiz);

			break;

			case 6:

			b=contarNos(raiz);
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("  A arvore possui %d nos!\n",b);
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");

			break;
			case 7:

			printf("ARVORE BINARIA\n");
			imprime(raiz,0);

			break;
			default :

			printf("opcao nao existe! tente novamente");

			break;
		}

	}


	return 0;

}