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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Una pregunta sobre métodos buscar e insertar en árboles en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Una pregunta sobre métodos buscar e insertar en árboles en c++  (Leído 1,364 veces)
j.garcia2

Desconectado Desconectado

Mensajes: 126



Ver Perfil WWW
Una pregunta sobre métodos buscar e insertar en árboles en c++
« 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.


« Última modificación: 2 Enero 2015, 14:03 pm por j.garcia2 » En línea

BLOG DE INFORMÁTICA E INTERNET:
http://www.zonainformatica.org
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Source]Insertar iconos de archivos en un List View (2 métodos)
Programación Visual Basic
~~ 9 4,460 Último mensaje 29 Septiembre 2007, 17:43 pm
por Freeze.
Pregunta información sobre las cabeceras y los metodos.
Nivel Web
PHAMTOM 7 4,325 Último mensaje 10 Abril 2010, 03:12 am
por SeC
[Pregunta]Manejo de gráficos: métodos
Python
Binary_Death 6 3,399 Último mensaje 19 Agosto 2010, 17:02 pm
por flony
[Resuelto] [Pregunta]: Métodos captchas
Desarrollo Web
Leguim 9 5,678 Último mensaje 26 Septiembre 2019, 22:04 pm
por Leguim
[Resuelto] [Pregunta]: ¿En que formularios insertar captchas?
Desarrollo Web
Leguim 1 3,924 Último mensaje 26 Septiembre 2019, 02:49 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines