Hello. My binary tree is only printing the left side, what can it be? I'm using TAD to implement.
Tree structure:
typedef struct _no {
int conteudo;
struct _no *esquerda;
struct _no *direita;
struct _no *pai;
} Arvore;
Insertion function.
void inserir(Arvore **arv, int numero){
Arvore *aux, *ant;
aux = *arv;
Arvore *novo;
novo = (Arvore*) malloc(sizeof(Arvore));
novo->direita = NULL;
novo->esquerda = NULL;
novo->conteudo = numero;
if(estaVazia(*arv)){
novo->pai = NULL;
*arv = novo;
return;
}
while (aux != NULL){
ant = aux;
if(numero > aux->conteudo){
aux = aux->direita;
}else{
aux = aux->esquerda;
}
}
if (numero > ant->conteudo){
ant->direita = novo;
novo->pai = aux;
}else{
ant->esquerda = novo;
novo->pai = aux;
}
free(aux);
}
Print function
void preOrdem(Arvore *arv){
printf("%d ", arv->conteudo);
preOrdem(arv->esquerda);
preOrdem(arv->direita);
}
Main file
int main(){
Arvore *arvore;
inicializarArvore(&arvore);
inserir(&arvore,20);
inserir(&arvore,25);
inserir(&arvore,10);
inserir(&arvore,5);
inserir(&arvore,30);
preOrdem(arvore);
}