void preordem (no *arvore){ if(arvore != NULL){ printf("%d\n",arvore->chave); preordem(arvore->esq); preordem(arvore->dir); } }
void preordem(no *raiz) { //faz a impressão e depois percorre a arvore primeiramente pelo lado esquerdo, ou seja a impressão comessará pela raiz if(raiz != NULL) { //verifica se o elemento existe printf("%d ", raiz->chave); //faz a impressão preordem(raiz->esq); //re-executa a função diminuindo os valores chave preordem(raiz->dir); //re-executa a função aumentando os valores chave } //ou seja, imprimirá de cima para baixo da esquerda para a direita }
void preordem(arvore *aux){ if(aux!=NULL){ printf("%i ",aux->info); preordem(aux->esq); preordem(aux->dir); } }//método de preordem
//IMPRIME O PRIMEIRO NÓS, OS DA ESQUERDA, DEPOIS OS DA DIREITA. void preordem(NODE *apontno){ if(apontno != NULL){ printf("%d\t",apontno->dado); //IMPRIME =8 preordem(apontno->esq); //IMPRIME <8 preordem(apontno->dir); //IMPRIME >8 } }
/* percurso em pre-ordem recursiva */ void preordem(apontador n) { if (n==null) return; printf("%d\n", n->chave); preordem(n->esq); preordem(n->dir); }
void preordem(Arv *raiz) { if (raiz != NULL) { printf("%d.", raiz->elem); preordem(raiz->esq); preordem(raiz->dir); } }
void preordem(no *raiz){ //função que imprime os valores da árvore em "preordem" if(raiz == NULL){ return; } printf("%d ", raiz->chave); preordem(raiz->esq); preordem(raiz->dir); return; }
void preordem(struct arvore*no) { if(no!=NULL) { printf("%d\n", no->chave); //aqui voce faz o que quiser quando tiver no no. imprimir chave, ou qualquer outra coisa preordem(no->esq); preordem(no->dir); } }
/*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_AVL arv; criar_arvore_avl(&arv); int tam; //número de elemento que serão inseridos na árvore int i; int chave; //variável que armazena a chave do elemento quer será removido int teste = 0; //variável que verifica se o usuário quer continuar removendo bool bol; struct INFO *valores; //lê os elementos que serão inseridos na árvore leitura(&tam,&valores); //insere e efetua o balanceamento dos elementos for (i=0; i < tam; i++) inserir_arvore_avl(&arv, valores[i]); //exibe em pré-ordem preordem(&arv); if (tam > 0) { printf ("Digite 1 se deseja remover: "); scanf ("%d", &teste); while ((tam > 0) && (teste == 1)) { //verifica se há pelo menos um elemento na árvore para ser removido printf ("Chave do elemento: "); scanf ("%d", &chave); remover_aux(&arv,chave,&bol); printf ("\n"); preordem(&arv); printf ("\nDigite 1 se deseja continuar removendo: "); scanf ("%d", &teste); tam--; } } else if (tam == 0) printf ("\nArvore vazia.\n\n"); else printf ("\nValor invalido.\n\n"); limpar_arvore_avl(&arv); return 0; };
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; }