Ejercicio 2.5

Re: Ejercicio 2.5

de Sofia Tito Virgilio Rodriguez -
Número de respuestas: 0

Hola Michel,

Tu solución resuelve el problema. Y además el pasaje por referencia se utiliza correctamente. Pero tiene algunos detalles.

Algunos detalles que yo encontré serían:

  • El if(a!=NULL) de caminoMasLargoRec es innecesario porque si te fijas, implícitamente tomaste como precondición que el parámetro de entrada sea distinto de NULL, ya que siempre veríficas que el árbol sea distinto de NULL antes de invocar a la función con dicho árbol, así que nunca la vas a invocar con un árbol que sea NULL. (La otra opción sería evitar las verificaciones previas a la invocación y considerar el caso a == NULL dentro de la función)
  • Al insertar al principio en la lista estarías obteniendo el camino más largo en el orden desde las hojas a la raíz, capaz que sería más natural que los elementos en la lista quedaran guardados desde la raiz a las hojas, es decir, que la raiz sea el primer elemento de la lista, y la hoja del camino más largo el último (esto se puede lograr insertando al final en lugar de al principio)
  • Estás insertando la raiz dos veces, no es necesario que lo hagas en caminoMasLargo, porque si te fijas, es lo primero que haces en caminoMasLargoRec, ¿se ve esto?
  • Finalmente, en varias llamadas recursivas te olvidaste de pasar l como parámetro!

Luego, hay que tener en cuenta que puede ser un poco ineficiente invocar a altura en cada llamada recursiva, ya que se están recorriendo nodos del árbol reiteradas veces, eso es lo que se busca optimizar un poco más en la solución que nosotros planteamos.

Cualquier cosa que genere dudas volvé a consultar,

Saludos!