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 } }
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 } }
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; }
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; }
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; }
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; }
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); } }
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; }
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; }