Então, estava desenvolvendo o meu código de árvore AVL para minha prova da faculdade, mas em um teste percebi que não estava mostrando os dados inseridos, mas caso eu tirasse a estrutura de repetição a impressão era feita com sucesso, então peço ajuda de vocês para resolver esse meu problema. Segue abaixo o código.
#include <iostream>
#include <malloc.h>
#include <locale.h>
using namespace std;
typedef struct no{
int chave;
struct no* esquerda, *direita;
};
no* CriaNo(int v){
no* NovaChav = (no*) malloc(sizeof(no));
NovaChav->esquerda = NULL;
NovaChav->direita = NULL;
NovaChav->chave = v;
return NovaChav;
}
no* AdcionaNO(no* arvore, int v){
if(arvore == NULL){
return CriaNo(v);
}
if(arvore->chave > v){
arvore->esquerda = AdcionaNO(arvore->esquerda, v);
}else{
arvore->direita = AdcionaNO(arvore->direita, v);
}
return arvore;
}
void ImprimeArv(no* arvore){
// cout<<"<"<<endl;
if(arvore != NULL){
cout<<arvore->chave<<endl;
ImprimeArv(arvore->esquerda);
ImprimeArv(arvore->direita);
}
//cout<<">"<<endl;
}
int main()
{
setlocale(LC_ALL, "PORTUGUESE");
int op=0, numb;
no* raiz = NULL;
//raiz = AdcionaNO(raiz, 5);
while(op!=1){
cout<<"Escolha uma função:"<<endl;
cout<<"1-Sair"<<endl;
cout<<"2-Inserir valor"<<endl;
cin>>op;
ImprimeArv(raiz);
switch(op){
case 2:
cout<<"Adcionar um valor à árvore"<<endl;
cout<<"Qual o valor a ser inserido?"<<endl;
cin>>numb;
AdcionaNO(raiz, numb);
}
}
return 0;
}