elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Busqueda por posicion en arboles binarios c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Busqueda por posicion en arboles binarios c++  (Leído 1,719 veces)
Abril7

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Busqueda por posicion en arboles binarios c++
« en: 12 Mayo 2017, 15:35 pm »

Hola,
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;
    }
}


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Busqueda por posicion en arboles binarios c++
« Respuesta #1 en: 12 Mayo 2017, 15:46 pm »

En la funcion busquedaPos tienes un while, con una condicion.
Cuando esa condicion se hace falsa?

Yo creo que nunca, porque parece que no estas modificando las variables que controlan el ciclo.


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arboles binarios
Programación C/C++
josue_tux 3 10,293 Último mensaje 9 Mayo 2010, 20:18 pm
por leogtz
[?] Arbb (arboles binarios de busqueda) C++...???
Programación C/C++
Liraa 3 3,893 Último mensaje 27 Julio 2010, 22:59 pm
por ghastlyX
Arboles binarios
Java
soser 0 2,004 Último mensaje 27 Octubre 2010, 08:45 am
por soser
Arboles Binarios c++
Programación C/C++
maferavagar 3 2,750 Último mensaje 8 Julio 2015, 11:20 am
por ivancea96
Problema en arboles binarios de busqueda
Programación C/C++
Josh13 1 1,763 Último mensaje 21 Mayo 2018, 15:19 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines