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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cömo detener búsqueda recursiva de un elemento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cömo detener búsqueda recursiva de un elemento  (Leído 3,165 veces)
andie13

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Cömo detener búsqueda recursiva de un elemento
« en: 23 Septiembre 2017, 18:53 pm »

Hola a todxs,
debo realizar un ejercicio para clase y hay una cosa que no tengo clara: pide explícitamente utilizar esta función void buscar(arbol A, elem dato, arbol *aux); para buscar un elemento de un árbol de letras (que no están ordenadas). El primer parámetro es el árbol dónde queremos buscar, el segundo el dato que se busca y el tercero un puntero que apunte a la posición del árbol donde se encuentra ese elemento.

Ahora bien, la función realiza su trabajo, pero quería saber si existe algún modo de detener la búsqueda cuando se haya encontrado el elemento y de que te avise si no lo ha encontrado. Al ser recursiva y de tipo void, no tengo claro como sería el procedimiento. Os dejo aquí mi función por si a alguien se le ocurre algo.

¡Muchas gracias, compañeros!

Código
  1. void buscar(arbol A, elem dato, arbol *aux){
  2.    elem E;
  3.    if(!esVacio(A)){
  4.        info(A,&E); // Miramos el contenido del nodo y lo almacenamos en la variable auxiliar E
  5.        if(E==dato){ // Si el dato del nodo coincide con el buscado...
  6.            *aux=A;
  7.        }
  8.        else{
  9.            buscar(izq(A),dato,aux);
  10.            buscar(der(A),dato,aux);
  11.        }
  12.    }
  13. }


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Cömo detener búsqueda recursiva de un elemento
« Respuesta #1 en: 23 Septiembre 2017, 19:08 pm »

Al ser void y no poder devolver ningun dato, lo unico que queda es establecer unas variables global que indique si ya se encontro y su ubicacion en el arbol, asi mismo la función recursiva podria validar esa variable antes de continuar.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Cömo detener búsqueda recursiva de un elemento
« Respuesta #2 en: 23 Septiembre 2017, 21:47 pm »

Si llamas a la función con aux = NULL (o nullptr o 0), basta que llames a buscar(der()) solo si aux == 0.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Cömo detener búsqueda recursiva de un elemento
« Respuesta #3 en: 24 Septiembre 2017, 04:07 am »

Lo principal es parar la búsqueda cuándo ya no quede más árbol, por tanto deberás parar la búsqueda por una rama cuándo la hoja sea NULL. Lo mismo con la otra.
Si encuentras el elemento, lo cargas en aux y regresas de la función (¿te suena?) Si por las dos ramas has llegado a NULL simplemente regresas dejando aux como NULL (la clave está en inicializar bien), que querrá decir que no se ha encontrado nada.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Función recursiva de búsqueda.
Programación C/C++
APOKLIPTICO 1 2,841 Último mensaje 4 Junio 2010, 21:51 pm
por [D4N93R]
Busqueda recursiva
Programación C/C++
s3tH 7 8,895 Último mensaje 6 Mayo 2012, 02:46 am
por david_BS
[C] Búsqueda binaria recursiva
Programación C/C++
BatchianoISpyxolo 3 19,454 Último mensaje 29 Octubre 2012, 23:08 pm
por flony
busqueda elemento ArrayList java
Java
gmc7 0 1,867 Último mensaje 22 Diciembre 2013, 13:43 pm
por gmc7
Me pueden ayudar a hacer una Búsqueda Binaria Recursiva Dinamica
Programación C/C++
gibranini 4 3,963 Último mensaje 8 Julio 2014, 19:20 pm
por gibranini
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines