/* operacoes em arvores binarias de busca*/ #include #include #include #include int main(); void insere (struct no *&praiz, struct no *novo); void emordem (struct no *raiz); void preordem (struct no *raiz); void posordem (struct no *raiz); int pesquisa (struct no *aux1, int itemaux); void remove (struct no *&aux1); struct no { int item; struct no *esq, *dir; }; struct no *raiz, *aux1, *aux2; int main() { char c, op = '1', auxitem[3]; int achou; raiz = (struct no*) NULL; // inicializa a arvore vazia while (op != '0') { system("cls"); puts(" Operacoes em Arvores Binarias de Busca\n\n"); puts("1. Inserir um item novo na arvore"); puts("2. Consultar um item na arvore"); puts("3. Remover um item da arvore"); puts("4. Imprimir a arvore em pre-ordem"); puts("5. Imprimir a arvore em ordem"); puts("6. Imprimir a arvore em pos-ordem"); puts("0. Sair"); printf("Entre com sua opcao: "); op = getche(); switch(op) { case '1': // insere { aux1 = (struct no *) malloc(sizeof(struct no)); printf("\n\nEntre com o item a ser inserido: "); gets(auxitem); aux1->item = atoi(auxitem); aux1->esq = aux1->dir = (struct no*) NULL; if (raiz == (struct no *) NULL) raiz = aux1; else { aux2 = raiz; insere(aux2, aux1); } } break; case '2': // consulta { if (raiz == (struct no *) NULL) printf("\n\nImpossivel pesquisar. Arvore vazia !"); else { printf("\n\nEntre com o item a ser pesquisado: "); gets(auxitem); achou = pesquisa(raiz, (atoi(auxitem))); if (achou) puts("Achou !"); else puts ("Nao achou !"); } } break; case '3': // remove { if (raiz == (struct no *) NULL) printf("\n\nImpossivel remover. A arvore estah vazia !"); else { printf("\n\nEntre com o item a ser removido: "); gets(auxitem); achou = pesquisa(raiz, (atoi(auxitem))); if (!achou) puts("Impossivel remover. O elemento nao existe na arvore !"); else //