Buenas,
Es compilador tiene razon al quejarse, ya que cuando haces la llamada recursiva no haces retorno.
En realidad hay dos errores en dicho for:
-No haces retorno de un nodo en la llamada recursiva
-Cuando recorres lo haces sobre los hijos de la instancia cuando en realidad deberias hacerlos sobre el nodo pasado por parametro.
for(int i=0;i<
r.hijos.size();i++)
{
return buscarNodo(r.hijos.get(i),v);
}
Otra forma mas sencilla de hacer el bucle seria:
Código Java:
Ver originalfor(final nodoN nodoHijo : r.hijos) {
return buscarNodo(nodoHijo ,v);
}
Por otro lado, este metodo de busqueda es stateless y no depende del estado de una instancia, por lo que lo mas adecuado es que lo hagas static.
En resumen, tu codigo quedaria mas o menos asi:
Código Java:
Ver originalpublic static nodoN buscarNodo(nodoN r, int v)
{
if(r==null)
{
System.
out.
println("no hay nodo para buscar"); return null;
}
else
{
if(r.valor==v)
{
return r;
}
else
{
for(final nodoN nodoHijo : r.hijos) {
return buscarNodo(nodoHijo ,v);
}
}
}
}
Y cuando quieras llamarlo lo puedes hacer asi
Código Java:
Ver originalnodoN nodoEncontado = nodoN.buscarNodo(raiz, 8);
Un saludo