Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda na Arvore Binaria de Busca


Flávio Macêdo

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...