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


 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 233 veces)
Abril7

Desconectado Desconectado

Mensajes: 19


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

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: 43


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

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

Visita mi perfil en LinkedIn: http://goo.gl/SAaM48
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 6,180 Último mensaje 9 Mayo 2010, 20:18
por leogtz
[?] Arbb (arboles binarios de busqueda) C++...???
Programación C/C++
Liraa 3 2,356 Último mensaje 27 Julio 2010, 22:59
por ghastlyX
Arboles binarios
Java
soser 0 976 Último mensaje 27 Octubre 2010, 08:45
por soser
Arboles Binarios c++
Programación C/C++
maferavagar 3 716 Último mensaje 8 Julio 2015, 11:20
por ivancea96
Arboles Binarios en C++
Programación C/C++
pedro0620 0 292 Último mensaje 3 Octubre 2016, 05:10
por pedro0620
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines