arvore *inserir(arvore *ra, arvore *r, int valor){
if(r == NULL){
r = (arvore *) malloc (sizeof(arvore));
if(r == NULL){
printf("Error. Sem memoria para alocar");
system("pause");
exit(0);
}
r ->esquerda = NULL;
r ->direita = NULL;
r ->info = valor;
if(ra == NULL){
printf("\nEsse numero adicionado e a raiz.\n");
system("pause");
return r;
}
if(valor < ra -> info){
ra -> esquerda = r;
printf("\nEsse numero foi adicionado a esquerda de %d\n", ra->info);
}else{
ra -> direita = r;
printf("\nEsse numero foi adicionado a direta de %d\n", ra->info);
}
system("pause");
return r;
}
if(valor < r ->info){
inserir(r, r->esquerda, valor);
}else{
inserir(r, r->direita, valor);
}
}
void incluir (void){
int valor;
printf("\nDigite o valor para inserir: ");
scanf("%d", &valor);
if(raiz == NULL){
raiz = inserir(raiz, raiz, valor);
}else{
inserir(raiz, raiz, valor);
}
}
Pergunta
Flávio Macêdo
Pessoal,
como faço esse void "verificar a existencia do elemento"??
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct arvore{
int info;
struct arvore *esquerda;
struct arvore *direita;
};
arvore *raiz;
arvore *inserir(arvore *ra, arvore *r, int valor){
if(r == NULL){
r = (arvore *) malloc (sizeof(arvore));
if(r == NULL){
printf("Error. Sem memoria para alocar");
system("pause");
exit(0);
}
r ->esquerda = NULL;
r ->direita = NULL;
r ->info = valor;
if(ra == NULL){
printf("\nEsse numero adicionado e a raiz.\n");
system("pause");
return r;
}
if(valor < ra -> info){
ra -> esquerda = r;
printf("\nEsse numero foi adicionado a esquerda de %d\n", ra->info);
}else{
ra -> direita = r;
printf("\nEsse numero foi adicionado a direta de %d\n", ra->info);
}
system("pause");
return r;
}
if(valor < r ->info){
inserir(r, r->esquerda, valor);
}else{
inserir(r, r->direita, valor);
}
}
void incluir (void){
int valor;
printf("\nDigite o valor para inserir: ");
scanf("%d", &valor);
if(raiz == NULL){
raiz = inserir(raiz, raiz, valor);
}else{
inserir(raiz, raiz, valor);
}
}
void preordem(arvore *pvalor){
if(pvalor != NULL){
printf("%d - ", pvalor->info);
preordem(pvalor->esquerda);
preordem(pvalor->direita);
}
}
void posordem(arvore *pvalor){
if (pvalor != NULL){
posordem(pvalor->esquerda);
posordem(pvalor->direita);
printf("%d - ", pvalor->info);
}
}
void emordem(arvore *pvalor){
if (pvalor != NULL){
emordem(pvalor->esquerda);
printf("%d - ", pvalor->info);
emordem(pvalor->direita);
}
}
void existencia(arvore *pvalor, int valor){
printf("Digite o elemento: ");
if (pvalor == valor){
printf("Elemento existe");
}else{
printf("Elemento não existe");
}
}
int main (void){
int op;
raiz=NULL;
while(1){
system ("cls");
printf ("\nMenu");
printf ("\n\n 1. Incluir elemento");
printf ("\n 2. Caminhar Pre-Ordem");
printf ("\n 3. Caminhar Pos-Ordem");
printf ("\n 4. Caminhar Em-Ordem");
printf ("\n 5. Verificar existencia do elemento");
printf ("\n 6. Excluir elemento");
printf ("\n 7. Sair");
printf ("\n\n Digite a opcao: ");
scanf ("%d",&op);
fflush(stdin);
switch (op) {
case 1 : incluir();
break;
case 2 : preordem(raiz);
system("pause");
break;
case 3 : posordem(raiz);
system("pause");
break;
case 4 : emordem(raiz);
system("pause");
break;
case 7 : exit(0);
default: printf ("\nOpcao errada.\n");
system ("pause");
break;
}
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.