Ir ao conteúdo

Posts recomendados

Postado

Bom dia, alguém poderia me dar uma luz de como faço a busca em uma arvores, de valores menores que um  determinado numero e  somar quantos desses valores tem, por exemplo: A arvores possui os números 5 6 7 10 e o usuário digita 8, a função deve procurar todos os numero menores que 8 e retornar a quantidade deles que nesse caso seria 3. Meu código ae 

*
    3) Implemente um método árvore que indique quantos elementos da árvore são
       menores do que um determinado valor. Você deve ler um determinado valor e
       contar quantos são menores que ele (5 pts).
*/
//DEFININDO OS PONTEIROS PARA ARVORES
typedef struct no {
    int v;
    struct no *esq, *dir;
} no;
no* inserir (no *raiz, int valor){
    //DEFININDO O NO PAI(PRIMEIRO NO)
    if(raiz == NULL){
        no *novo = (no*) malloc (sizeof(no));
        novo->v = valor;
        novo->dir = NULL;
        novo->esq = NULL;
        raiz = novo;
    }else{//DEFININDO OS NOS FILHOS(NOS APOS O PRIMEIRO NO)
        if(valor == raiz->v){
            printf("\n VALOR JÀ INSERIDO\n");
            system("pause");
        }
        if(valor > raiz->v){
            raiz->dir = inserir(raiz->dir,valor);//FUNÇÂO RECURSIVA PARA INSERIR A DIREITA
        }
        if(valor < raiz->v){
            raiz->esq = inserir(raiz->esq,valor);//FUNÇÂO RECURSIVA PARA INSERIR A ESQUERDA
        }
    }
    return(raiz);
}
//CONTAR OS NUMEROS MENORES
int count_value(no *raiz, int number,int flag){
    no *aux = (no*) malloc (sizeof(no));
    aux = raiz;
    if(raiz != NULL)
    {
        if(number>aux->v){
            flag++;
        }
        count_value(aux->dir,number,flag);
        count_value(aux->esq,number,flag);
    }
    return (flag);

return flag;
}
int main()
{
    no *raiz = (no*) malloc(sizeof(no));
    int flag =0,valor = 0,op = 0;
    raiz = NULL;
    do{
        system("cls");
        printf("\n SELECIONE A OPCAO DESEJADA: ");
        printf("\n 1 - INSERIR");
        printf("\n 2 - PROCURAR NUMEROS MENORES");
        printf("\n 3 - SAIR\n");
        scanf("%d",&op);
        switch(op){
            case 1:{
                printf("\n INFORME O VALOR: ");
                scanf("%d",&valor);
                raiz = inserir(raiz,valor);
                break;
            }
            case 2: {
                printf("\n INFORME O VALOR: ");
                scanf("%d",&valor);
                flag = count_value(raiz,valor,flag);
                printf("%d\n",flag);
                system("pause");
                break;
            }
            case 3:{
                printf("\nENCERRANDO");
                op = 3;
                break;
            }
        }

    }while(op != 3);

    printf("\n");
    return 0;
}

 

Postado

Não escreveu nenhuma função de percurso da árvore...

 

Se percorrer a árvore por nível os nós vem na ordem. Basta contar quantos são menores. Só isso.

 

  • Pra que serve flag em seu programa?
  • Porque tem um menu? Pra que isso? Só trabalho. Não escreva um programa interativo. Nunca. A menos que seja o objetivo e aí você coloca isso depois...
  • uma árvore não é um nó. Um nó não é uma árvore. Se programar assim só vai ter mais trabalho. 
  • Curtir 1
  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!