Ir ao conteúdo
  • Cadastre-se

Arvore binaria em c


jefferson2008.1

Posts recomendados

estou com problema no meu codigo

na função listarPorNivel

ele deve listar os elementos no nivel determinado pelo usuario

porém quando peço para listar no nivel 1

ele não lista nada

no nivel 2 ele lista o elemento do nivel 1

no nivel 3 ele lista os elementos do nivel 2 e assim por diante

ja mudei de toda forma mas não consegui conserta isso

ajuda ai pessoal

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

typedef struct NO{
int n;
char chave[20];
struct NO *esq,*dir;
struct NO *proxcor;
struct NO *proxcidade;
struct NO *proxmodelo;
struct NO *volta;
}no;
void inicializar(no **celula)
{
(*celula)->proxcor =NULL;
(*celula)->proxcidade = NULL;
(*celula)->proxmodelo=NULL;
(*celula)->esq=NULL;
(*celula)->dir=NULL;
(*celula)->volta =NULL;
}

// PROCEDIMENTO PARA AUXILIAR O INSERIR
void inserirno(char informacao[20],no **celula)
{

if (*celula ==NULL)
{
*celula =(no*)malloc(sizeof(no));
strcpy((*celula)->chave,informacao);
(*celula)->esq =NULL;
(*celula)->dir =NULL;
return;
}
if(strcmp(informacao,(*celula)->chave)<0){
inserirno(informacao,&(*celula)->esq);
return;
}
if(strcmp(informacao,(*celula)->chave)>0){
inserirno(informacao,&(*celula)->dir);
}
}

//PROCEDIMENTO PARA INSERIR

void inserir(no **celula)
{
int v, i;
char informacao[20];
printf("quantos cadastro deseja fazer? ");
scanf("%d",&v);
for (i=0;i<v;i++)
{
printf("entrada: ");
scanf("%s",&informacao[0]);
inserirno(informacao,&(*celula));
}
}

// PROCEDIMENTO PARA LISTAR EM ORDEM
void em_ordem ( no **mod) {
if (*mod) {
em_ordem (&(*mod)->esq);
printf ("%s\n",(*mod)->chave);
em_ordem (&(*mod)->dir);
}
}

// PROCEDIMENTO PARA LISTAGEM POR NIVEL

void listarpornivel(no **celula,int nivel)
{
printf("ok");
if ((nivel == 1) && (*celula !=NULL))
{
printf("ok");
printf("%s\n",(*celula)->chave);
}
else
{
if ((*celula) ->esq != NULL)
{
listarpornivel(&(*celula)->esq ,nivel-1);
}
if ((*celula)->dir != NULL)
{
listarpornivel(&(*celula)->dir ,nivel - 1);
}
}
}

// FUNÇÃO PRINCIPAL

int main()
{
char opcao ,informacao[20] ;
no *mod,*c,*cid;
int nivel;
//PARA INSERIR MODELO
mod = (no*)malloc(sizeof(struct NO));
inicializar(&mod);
inserir(&mod);
//PARA INSERIR COR
c = (no*)malloc(sizeof(struct NO));
inicializar(&c);
inserir(&c);
//PARA INSERIR CIDADE
cid = (no*)malloc(sizeof(struct NO));
inicializar(&cid);
inserir(&cid);
printf("nivel");
scanf("%d",&nivel);
listarpornivel(&mod,nivel);


opcao ='o';
while (opcao != 'e')
{
scanf("%s%s",&opcao,&informacao[0]);
if ((opcao == 'p') && (informacao[0] == 'm'))
{
em_ordem(&mod);
}
if ((opcao =='p') && (informacao[0] =='c' ))
{
em_ordem(&c);
}
if ((opcao == 'p') && (informacao[0] =='t'))
{
em_ordem(&cid);
}
}
return 0;
}

:cool:

Link para o comentário
Compartilhar em outros sites

galera me ajuda ai

não estou entendendo o que o professor pede na

consulta 3 e 4 deste trabalho ai em baixo(link)

peço a quem entender do assunto(arvores binarias)

me ajudar a entender o que o professor pede

o trabalho ta no link

* trab2.2008.2.pdf: Segundo Trabalho Pratico

https://disciplinas.dcc.ufba.br/MATA40/SemestreLetivo20082

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!