Estoy teniendo problemas haciendo una funcion recursiva en arboles binarios, estoy intentando dar una posicion y que me retorne el valor que se encuentra en esa posicion, ya pasé demasiado tiempo intentandolo arreglar y no puedo, me deja de funcionar y así. Si alguien sabe que hago mal y me puede explicar, lo agradecería muchisimo.
Gracias de antemano.
Código:
struct node
{
int info;
struct node *left;
struct node *right;
}*root;
class BST
{
public:
void find(int, node **, node **);
void insert(node *tree, node *newnode);
void del(int);
void case_a(node *,node *);
void case_b(node *,node *);
void case_c(node *,node *);
void preorder(node *);
void inorder(node *);
void postorder(node *);
void display(node *, int);
void recupera(int pos);
int countNodes(node *);
int busquedaPos(node *ptr,int c,int pos);
BST()
{
root = NULL;
}
};
int BST::busquedaPos(node *ptr,int c, int pos)
{
while(c != pos+1){
busquedaPos(ptr->left,c+1,pos);
busquedaPos(ptr->right,c+1,pos);
}
return ptr->info;
}
void BST::recupera(int pos)
{
int y = 1;
if(root == NULL)
{
cout<<"\tEmpty tree."<<endl;
}
else if (pos==1){
cout<<"Your position is the root, so the value is: "<<root->info<<". "<<endl;
}
else if(pos>1 && pos <= (countNodes(root)))
{
bool found = false;
while( y != pos && found != true){
cout<<"ok"<<endl;
int plz = busquedaPos(root,y,pos);
cout<<"ok2"<<endl;
cout<<"Your value is: "<< plz <<endl;
found = true;
}
}
else if(pos > (countNodes(root)) or pos<0){
cout<<"\tError: The position that you are trying to use is invalid."<<endl;
cout<<"\tThe list only have '"<<countNodes(root)<<"' elements. Try with one that is on range."<<endl;
}
}