Ver Mensaje Individual
  #13 (permalink)  
Antiguo 24/11/2014, 12:31
samurai_7
 
Fecha de Ingreso: mayo-2006
Mensajes: 70
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Duda al definir un árbol n-ario

Hola,
gracias de nuevo por tomarte tu tiempo :).

Muchas gracias por tu ayuda en la instancia de los hijos, se me pasó ese detalle de r., pero llevas tu razón. ;).

Pero no estoy de acuerdo contigo en eso de que debe retornar un valor siempre, ya que de los 3 posibles casos que tengo, en 2 de ellos (cuando r ==null y cuando encuentro en el valor que deseo) devuelvo un resultado tipo nodoN, es sólo en la última función que falta (en la de búsqueda de los hijos) cuando no devuelve, pero dicha función al resolverse por recursividad, devolverá al resolverse un valor de tipo nodoN, ya que en última instancia tirará por alguno de los 2 caminos por lo que si está devolviendo algo.

Quizás sea fallo de concepto en Java, creo que en c se hacia como digo, ya que al resolverse la recursividad dará el tipo dado.
De todas formas, como tampoco había muchas opciones, puse un return como bien indicas, quedando el cógido de la siguiente forma:

Código Java:
Ver original
  1. public nodoN buscarNodo(nodoN r, int v)  <--1
  2.     {
  3.         if(r==null)
  4.         {
  5.             System.out.println("no hay nodo para buscar");
  6.             return null;
  7.         }
  8.        
  9.         else
  10.         {
  11.             if(r.valor==v)
  12.             {
  13.                 return r;
  14.             }
  15.            
  16.             else
  17.             {
  18.                 for(int i=0;i<hijos.size();i++)  <--2
  19.                 {
  20.                 return buscarNodo(r.hijos.get(i),v);    
  21.                 }  
  22.             }
  23.         }
  24.     }

<--1, me indica el mismo fallo que entes, que no devuleve el tipo adecuado (nodoN).
<--2, indica en el i++, cógido muerto. Imagino que será ya que en la primera iteración revolverá el resultado, y ya saldrá del bucle, por lo que no se llega a ejecutar el primer i++. Pero si no es con un bucle, no se me ocurre como llamar a cada uno de los hijos.

Gracias!

Última edición por samurai_7; 24/11/2014 a las 18:29