AYUDA!!!!

Luzdeluna
18 de Enero del 2004
ok, este es el problema, estoy implementando un DFS para, dados dos nodos (amigos) me recorra el grafo y me devuelva una posible cadena de comunicación. este es el código de ese procedimiento, lo que pasa es que en la recursividad se pierde....

public void recorrerDFS( String amigo1, String amigo2)
{
int numeroUsuarios= Usuario.user.size();
Usuario temp;
ultimaNumeracion = 0;

numeracionNodos = new int[numeroUsuarios];
//System.out.println("DENTRO DE RECORRER DFS");
Arrays.fill(numeracionNodos, -1);

for ( int i=0; i<numeroUsuarios; i++)
{
temp=(Usuario)user.elementAt(i);

if(temp.nombre.equals(amigo1))
if( numeracionNodos[i]==-1 )
{
System.out.println("DENTRO DE RECORRER DFS");
dfs(i,amigo2);
}
// Usuario.cadena.clear();
// System.out.println("borre cadena");
}
}

/****************************************************************************/
private void dfs( int nodo, String amigo )
{
int numeroUsuarios= Usuario.user.size();
Usuario temp2= new Usuario ();

System.out.print("Estoy en dfs");
numeracionNodos[nodo] = ultimaNumeracion ++;
// busca todos los adyacentes
for( int i=0; i<numeroUsuarios; i++ )
{
System.out.print("Estoy en el for");
if( (Lados.matrizAdyacencia[nodo][i]==1) && (numeracionNodos[i]==-1) )
{
// hacer algo con el nodo
temp2= (Usuario) user.elementAt(i);
if (temp2.nombre.equals(amigo))
{
System.out.print("Estoy en el if");
cadena.addElement(amigo);
return;
}
else
{
Usuario.cadena.addElement(amigo);
System.out.print("aqui acabo de agregar a boris");
dfs( i,amigo );

}
}
}

}

de verdad me ayudarían mucho porque ya no sé qué hacer!!!
Gracias

Luzdeluna
18 de Enero del 2004
olvidenlo!... ya lo arreglé. necesitaba una variable global y estaba local
les mando el corregido po si acaso están interesados

/****************************************************************************/
public void recorrerDFS( String amigo1, String amigo2)
{

int numeroUsuarios= Usuario.user.size();
Usuario temp;
ultimaNumeracion = 0;

numeracionNodos = new int[numeroUsuarios];
Arrays.fill(numeracionNodos, -1);

for ( int i=0; i<numeroUsuarios; i++)
{
temp=(Usuario)user.elementAt(i);

if(temp.nombre.equals(amigo1))
{
cadena.addElement(amigo1);
if( numeracionNodos[i]==-1 )
{
System.out.println("DENTRO DE RECORRER DFS");
dfs(i,amigo2);
return;
}
}
}
}

/****************************************************************************/
private void dfs( int nodo, String amigo )
{
int numeroUsuarios= Usuario.user.size();
Usuario temp2= new Usuario ();
numeracionNodos[nodo] = ultimaNumeracion ++;
// busca todos los adyacentes
for( int i=0; i<numeroUsuarios; i++ )
{

if( (Lados.matrizAdyacencia[nodo][i]==1) && (numeracionNodos[i]==-1) )
{
if (parada!=1)
{
temp2= (Usuario) user.elementAt(i);
if (temp2.nombre.equals(amigo))
{
cadena.addElement(amigo);
parada=1;
System.out.println("Parada:"+parada);
return;
}

else
{
Usuario.cadena.addElement(temp2.nombre);
dfs( i,amigo );
}
}
else
{
System.out.println("estoy en parada "+parada);
return;
}
}
}

}
/*******************************************/
las variables no declaradas están globales