No *remocao(No **paiRaiz, int valorInserido){ if(*paiRaiz == NULL) printf("O valor %d não existe na Arvore\n", valorInserido); else{ if(valorInserido < (*paiRaiz)->numero) remocao(&(*paiRaiz)->esq,valorInserido); else if(valorInserido > (*paiRaiz)->numero) remocao(&(*paiRaiz)->dir,valorInserido); else{ if((*paiRaiz)->esq != NULL){ No *auxiliar = maisDireita(&(*paiRaiz)->esq); (*paiRaiz)->numero = auxiliar->numero; (*paiRaiz)->esq = remocao(&(*paiRaiz)->esq, auxiliar->numero); } else if((*paiRaiz)->dir != NULL){ No *auxiliar = maisEsquerda(&(*paiRaiz)->dir); (*paiRaiz)->numero = auxiliar->numero; (*paiRaiz)->dir = remocao(&(*paiRaiz)->dir, auxiliar->numero); } else{ printf("O valor %d foi removido!\n", (*paiRaiz)->numero); (*paiRaiz) = NULL; } } } return (*paiRaiz); }
void main(){ int n, menu,i; struct arvore * raiz = (struct arvore *) malloc(sizeof(struct arvore)); raiz->chave = 25; raiz->esq = NULL; raiz->dir = NULL; printf("Digite 1 para inserir, 2 para remover, 3 para buscar\n"); scanf("%d",&menu); switch(menu){ case 1: printf("Digite o numero de elementos a serem inseridos: %d\n",n); scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%dº numero a ser inserido",&i); insercao(raiz,i); } case 2: printf("Digite o elemento a ser removido:%d\n",n); scanf("%d",&n); remocao(raiz,n); case 3: printf("Digite o elemento a ser buscado:%d\n",&n); scanf("%d",&n); busca(raiz,n); default: printf("Numero nao pertencente ao menu\n"); } }
int main(){ int opcao, chave, dado, tamanho, i; struct arvore *raiz = criaArvore(); // cria uma arvore com nenhum dado printf("Forneca o numero de chaves que deseja adicionar\n"); scanf("%d", &tamanho); for(i = 0 ; i<tamanho ; i++){ printf("\nForneca a chave do %do elemento\n", i+1); scanf("%d", &chave); insercao(&raiz, chave); } printf("\n\n"); menu(); // Cria o menu para o usuario escolher a opcao scanf("%d", &opcao); while (opcao >= 1 && opcao <= 5){ switch(opcao){ case 1: printf("\nForneca o numero de chaves que deseja adicionar\n"); scanf("%d", &tamanho); for(i = 0 ; i<tamanho ; i++){ printf("\nForneca a chave do %do elemento\n", i+1); scanf("%d", &chave); insercao(&raiz, chave); } printf("\n\n"); break; case 2: printf("\nForneca a chave a ser removido\n"); scanf("%d", &chave); remocao(raiz, chave); printf("\n\n"); break; case 3: printf("\nForneca a chave que deseja buscar\n"); scanf("%d", &chave); busca(raiz, chave); printf("\n\n"); break; case 4: printf("\nImpressao\n"); impressao(raiz); printf("\n\n"); break; case 5: printf("\nImpressao em Labelled Bracketing \n"); impressaoLabelledBracketing(raiz); printf("\n\n"); break; } menu(); scanf("%d", &opcao); } return 0; system("PAUSE"); }
int main(){ bool sair = false; int opcaoSelecionada; int valorInserido; No *Arvore = NULL; Arvore = (No*) malloc(sizeof(No)); imprimirOpcoes(); while(!sair){ scanf("%d", &opcaoSelecionada); switch(opcaoSelecionada){ case 0: ; imprimirOpcoes(); break; case 1: ; printf("Digite o valor para Busca Recursiva\n"); scanf("%d",&valorInserido); buscaRecursiva(Arvore, valorInserido); break; case 2: ; printf("Digite o valor para Busca Iterativa\n"); scanf("%d",&valorInserido); buscaIterativa(Arvore, valorInserido); break; case 3: ; printf("Digite o valor para Insercao Iterativa\n"); scanf("%d",&valorInserido); insercaoIterativa(Arvore,valorInserido); break; case 4: ; printf("Digite o valor para Insercao Recursiva\n"); scanf("%d",&valorInserido); insercaoRecursiva(Arvore,valorInserido); break; case 5: ; printf("Digite o valor para Remocao\n"); scanf("%d",&valorInserido); remocao(Arvore,valorInserido); break; case 6: ; percursoPre(Arvore); break; case 7: ; percursoIn(Arvore); break; case 8: ; percursoPos(Arvore); break; case 9: ; free(Arvore); sair = true; break; default: ; printf("Opcao invalida, digite 0 para ver todas as opcoes validas\n\n"); break; } } return 0; }