Ajuda no preenchimento de Árvore Binária de Pesquisa
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");
}Discussão (1)
Carregando comentários...