Ir para conteúdo

Arquivado

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

Luciano-web

Ajuda no preenchimento de Árvore Binária de Pesquisa

Recommended Posts

Boa tarde,

Este é meu primeiro tópico aqui no fórum, estou iniciando os estudos em Árvore Binária de Pesquisa (Busca) e estou com dificuldades na inserção e impressão dos números (chaves) na tela depois de inseridos os números.
--
Alguma sugestão? é a declaração da RAIZ? é a função de inserção?
Na verdade não aparece nada quando chamo as funções de impressão, eu já "testei" a RAIZ antes de chamar a função de impressão e ela está "zerada"

--
Segue o código abaixo, se alguém tiver um "caminho" para eu seguir eu agradeço!

--

#include <stdio.h>
#include <stdlib.h>
typedef struct arvore{
int valor;
struct arvore *dir, *esq;
} arvore;
void insere(arvore *raiz, int valor){
if (raiz == NULL){
arvore *aux;
aux = malloc (sizeof (arvore));
aux->valor = valor;
aux->dir = NULL;
aux->esq = NULL;
raiz = aux;
}
else if (valor > raiz->valor)
insere (raiz->dir, valor);
else if (valor < raiz->valor)
insere (raiz->esq, valor);
else
printf ("Elemento ja existe na arvore\n");
}
void em_ordem(arvore *raiz){ // esquerda / raiz / direita
if (raiz != NULL){
em_ordem(raiz->esq);
printf("%d ", raiz->valor);
em_ordem(raiz->dir);
}
}
void pre_ordem(arvore *raiz){ // raiz / esquerda / direita
if (raiz != NULL){
printf("%d ", raiz->valor);
pre_ordem(raiz->esq);
pre_ordem(raiz->dir);
}
}
void pos_ordem(arvore *raiz){ // esquerda / direita / raiz
if (raiz != NULL){
pos_ordem(raiz->esq);
pos_ordem(raiz->dir);
printf("%d ", raiz->valor);
}
}
void main(){
arvore *raiz;
raiz = NULL;
insere(raiz, 10);
insere(raiz, 8);
insere(raiz, 12);
insere(raiz, 5);
insere(raiz, 11);
printf("\n>> IMPRESSAO\n=====================================================");
printf("\n---------------------------------------\n EM ORDEM: ");
em_ordem(raiz);
printf("\n---------------------------------------\n PRE ORDEM: ");
pre_ordem(raiz);
printf("\n---------------------------------------\n POS ORDEM: ");
pos_ordem(raiz);
printf("\n---------------------------------------\n");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites


#include <stdio.h>

#include <stdlib.h>

 

struct arvore{

int valor;

struct arvore *dir, *esq;

};

 

arvore *insere(arvore *, int);

void em_ordem(arvore *);

void pre_ordem(arvore *);

void pos_ordem(arvore *);

 

arvore *insere(arvore *raiz, int valor){

//Preencher avo e filhos

if (raiz == (arvore *)NULL){

raiz = (arvore *)malloc (sizeof (arvore));

raiz->valor = valor;

raiz->dir = (arvore *)NULL;

raiz->esq = (arvore *)NULL;

return raiz;

}

//Preencher pais

if(raiz->esq == (arvore *)NULL){

raiz->esq = (arvore *)malloc (sizeof (arvore));

raiz->esq->valor = valor;

raiz->esq->dir = (arvore *)NULL;

raiz->esq->esq = (arvore *)NULL;

return raiz;

}

 

else if(raiz->dir == (arvore *)NULL){

raiz->dir = (arvore *)malloc (sizeof (arvore));

raiz->dir->valor = valor;

raiz->dir->dir = (arvore *)NULL;

raiz->dir->esq = (arvore *)NULL;

return raiz;

}

//Filhos

if (valor > raiz->esq->valor)

insere (raiz->dir, valor);

else if (valor < raiz->dir->valor)

insere (raiz->esq, valor);

else

printf ("Elemento ja existe na arvore\n");

return raiz;

}

 

void em_ordem(arvore *raiz){ // esquerda / raiz / direita

if (raiz != NULL){

em_ordem(raiz->esq);

printf("%d ", raiz->valor);

em_ordem(raiz->dir);

}

}

 

void pre_ordem(arvore *raiz){ // raiz / esquerda / direita

if (raiz != (arvore *)NULL){

printf("%d\n", raiz->valor);

if(raiz->esq != (arvore *)NULL){

printf("(esq de %d):",raiz->valor);

pre_ordem(raiz->esq);

}

if(raiz->dir != (arvore *)NULL){

printf("(dir de %d):",raiz->valor);

pre_ordem(raiz->dir);

}

}

}

 

void pos_ordem(arvore *raiz){ // esquerda / direita / raiz

if (raiz != NULL){

pos_ordem(raiz->esq);

pos_ordem(raiz->dir);

printf("%d ", raiz->valor);

}

}

 

int main(){

arvore *raiz = (arvore *)NULL;

 

raiz = insere(raiz, 10);

raiz = insere(raiz, 8);

raiz = insere(raiz, 12);

raiz = insere(raiz, 5);

raiz = insere(raiz, 11);

 

 

printf("\n>> IMPRESSAO\n=====================================================");

printf("\n---------------------------------------\n EM ORDEM:\n");

em_ordem(raiz);

printf("\n---------------------------------------\n PRE ORDEM:\n");

pre_ordem(raiz);

printf("\n---------------------------------------\n POS ORDEM:\n");

pos_ordem(raiz);

printf("\n---------------------------------------\n");

return 0;

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por btpdsnb
      Boa tarde, pessoal!
      Meu nome é Rodrigo e sou aluno de graduação da FEA-USP. Meu grupo está realizando uma pesquisa para analisar o que motiva e retém os desenvolvedores de software nas organizações do Brasil.
      Acreditamos que este tipo de pesquisa pode ajudar as empresas a entenderem os principais fatores de retenção e gerir melhor as práticas de gestão de pessoas adotadas para retê-los.
      Todos os dados pessoais coletados serão confidenciais, utilizados exclusivamente para fins acadêmicos.
      Aos que puderem responder, o questionário leva de 5 a 8 minutos para ser respondido.
      Link do formulário: https://docs.google.com/forms/d/1izmjInl_uuTgjIaQUF7Lk6rh7OudSy6MoBRugiMQdic/viewform?edit_requested=true
    • Por FelipeCostaFT
      Estou iniciando uma startup para ajudar os devs a entrarem no mercado de trabalho mais preparados
      e, por isso, com maior chance de arrumar um bom emprego.

      Mas gostaria de saber como está sendo a realidade de vocês nesse momento de encarar o mercado.
      Alguém já está nessa fase ou até dentro do mercado poderia me ajudar? Esse forms dura 1 minuto pra
      responder e vai nos auxiliar a descobrir como ajudá-los a chegar lá mais rápido.
       
      link do forms
    • Por Spy_brbr
      Tenho um sistema em PHP que funciona como um tipo de repositório para documentos. No início a ideia era apenas realizar pesquisas pelo título ou tipo de documento, mas andei lendo sobre algumas ferramentas como Apache Solr ou ElasticSearch que realizazam a indexação dos arquivos e permite realizar as buscas dentro de arquivos PDF, DOC, etc. Alguém já utilizou essas ferramentas ?
    • Por Jefferson andre
      Ola, Tenho uma lista de nomes de clientes escritas sem nenhum padrao de maiscula e minuscula e preciso fazer uma pesquisa nelas. O usuario vai digitar sem nenhum padrao. Entao preciso que todo o conteudo da lista e o campo digitado pelo usuario seja convertido para maisucula/minuscula e a pesquisa seja feita.   Exemplo: JEFFERSON rose Nicolas ROSEMEIRE   PESQUISAR POR: Ro   RETORNO DA PESQUISA: rose ROSEMEIRE   Como fazer isso em javascript ? preciso de um exemplo se tiver ok
    • Por Alberto Nascimento
      Estou tentando, mas não esta exibindo o registro...
       
      localizar.php
       
      <?php session_start(); $_SESSION["localizarfotografia"] = $_POST["codphoto"]; ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>EXIBIR FOTOGRAFIA PELO CÓDIGO INTERNO</title> <style type="text/css"> <!-- .Style6 {font-size: 13px} .auto-style20 { text-align: center; } .auto-style22 { background-color: #FEB624; } .auto-style23 { font-family: Verdana, Geneva, Tahoma, sans-serif; font-size: xx-small; text-align: center; } .auto-style25 { background-color: #FFCC66; } .auto-style26 { font-size: x-small; } .auto-style27 { font-size: x-small; text-align: center; } .auto-style28 { text-align: center; background-color: #FEB624; } --> </style> </head> <body style="margin-top: 50"> <body onload="form1.login.focus();"> <form id="form1" name="form1" method="post" action="pesquisaragora.php"> <div class="auto-style20"> <table align="center" cellpadding="0" cellspacing="0" class="auto-style23" style="width: 500"> <tr> <td class="auto-style20"> &nbsp;</td> </tr> <tr> <td class="auto-style22"> &nbsp;</td> </tr> <tr> <td class="auto-style25" style="height: 41px">Informe o código da FOTOGRAFIA abaixo</td> </tr> <tr> <td class="auto-style25"> <table align="center" style="width: 450"> <tr> <td class="auto-style27"><span class="Style6"> <label> <input name="codphoto" type="text" id="codphoto" style="width: 305px; height: 83px;" /></label></span></td> </tr> <tr> <td class="auto-style26"><strong> </strong></td> </tr> <tr> <td class="auto-style20"><span class="Style6"> <label> <input type="submit" name="Submit" value="LOCALIZAR PHOTO" /></label></span></td> </tr> </table> </td> </tr> <tr> <td class="auto-style25">&nbsp;</td> </tr> <tr> <td class="auto-style28"> &nbsp;</td> </tr> </table> <br></div> </form> </body> </html>  
      pesquisarphoto.php
       
      <?php include("config.php"); $codphoto = $_POST['codphoto']; $sql_logar = "SELECT * FROM photos WHERE codphoto = '$codphoto'"; $exe_logar = mysql_query($sql_logar) or die (mysql_error()); $fet_logar = mysql_fetch_assoc($exe_logar); $num_logar = mysql_num_rows($exe_logar); $codphoto = $fet_logar['codphoto']; $nome = $fet_logar['nome']; $cidade = $fet_logar['cidade']; $uf = $fet_logar['uf']; if ($num_logar == 0){ echo "Desculpe, mas a foto não foi localizada."; echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui e tente novamente.</a>"; } else{ session_start(); $_SESSION['codphoto'] = $codphoto; $nome = $fet_logar['nome']; $cidade = $fet_logar['cidade']; $uf = $fet_logar['uf']; echo $exibir["codphoto"]; echo $exibir["nome"]; echo $exibir["cidade"]; echo $exibir["uf"]; } ?>  
       
       
       
       
       
       
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.