Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: j.garcia2 en 2 Enero 2015, 14:01 pm



Título: Una pregunta sobre métodos buscar e insertar en árboles en c++
Publicado por: j.garcia2 en 2 Enero 2015, 14:01 pm
Buenas a todos,
Estoy haciendo una práctica de árboles y cuando pretendo buscar e insertar los datos en el primero de los casos no me busca bien las cosas y en el segundo me inserta los datos solamente por la izquierda en el arbol binario.

Estos son los códigos:

1) Insertar
Código:
void Arbol::InsertarNodo (Nodo *dat)
{
Nodo *padre = NULL;
actual = raiz;
bool continuar =true;

while(!esVacioActual() && continuar){
padre = actual;
if(dat->getDato()->getTitulo() > actual->getDato()->getTitulo() )
{
actual = actual->derecha;
}
else
if(dat->getDato()->getTitulo() < actual->getDato()->getTitulo())
{
actual = actual->izquierda;
}
else
if (dat->getDato()->getTitulo() == actual->getDato()->getTitulo())
continuar=false;
}
//if(!esVacio(actual)) (actual)) return;
if(esVacio(padre))
{
raiz = new Nodo (dat->getDato());

}
else

if(dat->getDato()->getTitulo() < padre->getDato()->getTitulo())
{
cout << dat->getDato()->getTitulo() << "es menor que " << padre->getDato()->getTitulo();
padre->izquierda = new Nodo(dat->getDato());
}
else

if(dat->getDato()->getTitulo() > padre->getDato()->getTitulo())
{
padre->derecha = new Nodo(dat->getDato());
cout << dat->getDato()->getTitulo() << "es mayor que " << padre->getDato()->getTitulo();
}
}

2) Buscar


Código:
Libro * Arbol::BuscarLibro(string titulo)
{
Nodo *padre = NULL;
actual = raiz;
bool continuar =true;

while(!esVacioActual() && continuar){
padre = actual;
if(titulo > actual->getDato()->getTitulo() )
{
actual = actual->derecha;
}
else
if(titulo < actual->getDato()->getTitulo())
{
actual = actual->izquierda;
}
else
if (titulo == actual->getDato()->getTitulo())
continuar=false;
}


return padre->getDato();
}

Básicamente la práctica que estoy realizando consta de una biblioteca en la que pretendo insertar los datos que leo por teclado en un árbol binario previamente habiendo creado una clase Libro en la que se encuentran todos sus atributos (libro, ISBN...), etcétera. Y bueno el siguiente paso que estoy realizando es el de buscar.
¿Me podría echar alguno una mano para encontrar el fallo en los métodos? ;) Muchas gracias de antemano!
saludos.