Título: buscar camino en un arbol AYUDAAAAA!!! Publicado por: matrod en 29 Abril 2016, 06:56 am Hola! tengo una entrega en facultad y hay una función que me está matando...
me piden hacer una función que dado un arbol binario de busqueda y una lista, me devuelva el "camino" que hace esa lista si es que existe dentro del arbol... el encabezado es este: camino_t buscar_camino(const lista l, const binario b); y el tipo camino es asi: Código PD: existe una función que creo que es util: Código al menos creo que de ahi se puede sacar algo...eso intenté pero no sale...se cuelga todo AYUDAAAA (http://imageshack.com/a/img922/685/L2w40e.jpg) MOD EDIT: No hacer doble post. Título: Re: buscar camino en un arbol AYUDAAAAA!!! Publicado por: MAFUS en 29 Abril 2016, 17:56 pm ¿Qué es...
texto_t array_rama nat ? Título: Re: buscar camino en un arbol AYUDAAAAA!!! Publicado por: _TTFH_3500 en 29 Abril 2016, 18:19 pm UY que mal, en 7 horas te respondo...
¿Qué es... texto_t array_rama nat ? texto_t es un puntero a una estructura (registro) que tiene un campo que es otro puntero a un o varios carácter/es. array_rama es un puntero a un enumerado que puede ser izq o der typedef unsigned int nat; me pregunto cómo se esto?... en fin. Si lo que quieres es ver si una lista esta en un árbol binario de búsqueda. Código
luego tu ves como llenar la estructura camino_t. Título: Re: buscar camino en un arbol AYUDAAAAA!!! Publicado por: matrod en 30 Abril 2016, 04:55 am solo para cerrar el tema...lo terminé resolviendo asi:
Citar camino_t buscar_camino(const lista l, const binario b){ binario baux=b; camino_t caux; caux.existe=false; caux.cantidad_ramas=0; caux.ramas= new rama_t[largo_lista(l)]; bool bandera=true; int i=0; localizador loc=inicio_lista(l); while (es_localizador_lista(loc) && bandera) { if (!es_vacio_binario(baux)) {bandera=comparar_texto(texto_info(raiz_binario(baux)),texto_info(info_lista(loc,l)))==igual; } else {bandera=false;} if (bandera) {if (es_localizador_lista(siguiente(loc,l))) { texto_t texto_sig=texto_info(info_lista(siguiente(loc,l),l)); texto_t texto_actual=texto_info(info_lista(loc,l)); if (comparar_texto(texto_sig,texto_actual)==mayor) {baux=baux->der; caux.ramas=der; i++;} else {baux=baux->izq; caux.ramas=izq; i++;} } } loc=siguiente(loc,l); } if (!es_localizador_lista(loc) && altura_binario(baux)==1){caux.existe=bandera; caux.cantidad_ramas=i;} else {delete[] caux.ramas;} return caux; } (localizador es un puntero a un nodo de la lista) De todas formas otras funciones tenian error y me quedé sin pasar todos los test que le hacen...mañana me dan el resultado pero creo que perdí el curso... :-\ |