I'm having a problem with my insertion function in this binary tree in C++. The nodes are correctly inserted until I need to add again a node to the right or to the left. The function thinks I don't have any nodes to either the left or the right in the case being that I already inserted nodes in those places.
Here is my code:
void insert(string data)
{
srand(time(NULL));
int r;
node *aux=head;
node *n=new node(data);
if (head==NULL)
{
head =n;
return;
}
while (aux!=NULL)
{
r=rand()%100;
if (r>50)
{
cout<<"\nRandom is "<<r<<", Therefore we have to go to the right."<<endl;
aux=aux->right;
}
else
{
cout<<"\nRandom is "<<r<<", Therefore we have to go to the left."<<endl;
aux=aux->left;
if (aux!=NULL)
{
cout<<aux->getdata()<<endl;
}
}
}
aux=n;
cout<<"\nWe insert "<<aux->getdata()<<endl;
}