Favor ajudar encontrar erro no item BUSCAR, quando selecionado o prog para de responder.
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct noArvore{
int numero;
noArvore *esquerda;
noArvore *direita;
}NoArvore;
void insere_elemento(NoArvore **pRaiz,int numero)
{
if(*pRaiz== NULL)
{
NoArvore *aux=(NoArvore *)malloc(sizeof(NoArvore));
aux->numero = numero;
aux->direita = aux->esquerda = NULL;
*pRaiz = aux;
return;
}
if(numero < (*pRaiz)->numero)
{
insere_elemento(&(*pRaiz)->esquerda, numero);
return;
}
if(numero >(*pRaiz)->numero)
{
insere_elemento(&(*pRaiz)->direita, numero);
return;
}
printf("\nELEMENTO %d já EXISTE !!! ",numero);
}
void mostra_em_ordem(NoArvore *pRaiz)
{
if(pRaiz!= NULL)
{
mostra_em_ordem(pRaiz->esquerda);
printf("< %i > ",pRaiz->numero);
mostra_em_ordem(pRaiz->direita);
}
}
void mostra_em_Pre_ordem(NoArvore *pRaiz)
{
if(pRaiz!= NULL)
{
printf("< %i > ",pRaiz->numero);
mostra_em_Pre_ordem(pRaiz->esquerda);
mostra_em_Pre_ordem(pRaiz->direita);
}
}
void mostra_em_Pos_ordem(NoArvore *pRaiz)
{
if(pRaiz!= NULL)
{
mostra_em_Pos_ordem(pRaiz->esquerda);
mostra_em_Pos_ordem(pRaiz->direita);
printf("< %i > ",pRaiz->numero);
}
}
void buscar_elemento(NoArvore *pRaiz,int valor)
{
if (pRaiz->numero > valor)
{
buscar_elemento (pRaiz->direita,valor);
if (pRaiz->numero == valor)
{
printf("\nVALOR ENCONTRADO: %d\n",pRaiz->numero);
}
}
else if(pRaiz->numero < valor)
{
buscar_elemento (pRaiz->esquerda,valor);
if (pRaiz->numero == valor)
{
printf("\nVALOR ENCONTRADO: %d\n",pRaiz->numero);
}
}
else
{
printf("\nVALOR NAO ENCONTRADO: %d\n",valor);
}
system ("pause");
}
int main(){
NoArvore *arvore= NULL;
int opcao,valor;
do
{
printf ("\n\n\t MENU DE opções\n\n\n < 1 > INSERIR ELEMENTO\n < 2 > BUSCAR ELEMENTO \n < 3 > MOSTRAR ELEMENTOS EM ORDEM\n < 4 > MOSTRAR ELEMENTOS EM PRE ORDEM\n < 5 > MOSTRAR ELEMENTOS EM POS ORDEM\n < 6 > SAIR\n\n");
scanf("%d", &opcao);
system("cls");
{
switch(opcao){
case 1:
printf("\nDIGITE UM VALOR ");
scanf("\n%d", &valor);
system("cls");
insere_elemento(&arvore, valor);
break;
case 2:
if (arvore ==NULL)
{
printf("\nARVORE VAZIA !!\n");
}
printf("\nDIGITE O VALOR A SER BUSCADO: ");
scanf("\n%d", &valor);
buscar_elemento(arvore,valor);
system("cls");
break;
case 3:
if (arvore ==NULL)
{
printf("\nARVORE VAZIA !!\n");
}
mostra_em_ordem(arvore);
break;
case 4:
if (arvore ==NULL)
{
printf("\nARVORE VAZIA !!\n");
}
mostra_em_Pre_ordem(arvore);
;
break;
case 5:
if (arvore ==NULL)
{
printf("\nARVORE VAZIA !!\n");
}
mostra_em_Pos_ordem(arvore);
break;
}
}
}while(opcao != 6);
return 0;
}