Je souhaite générer une forêt BFS d'un graphe DACC (Direct Acyclic Graph). Cela signifie que ma classe Tree doit être un arbre général et non un arbre binaire (en d'autres termes, je ne peux pas connaître le nombre d'enfants qu'un noeud aura à l'avance quand je génère une forêt). La plupart du code est écrit et montré ci-dessous, mais il me manque une ligne qui, pour la vie de moi, m'échappe! Ma classe Tree stocke un paramètre de valeur, une référence parente et une liste d'enfants. Mon problème est de référencer le nœud de l'arbre suivant. Une fois que j'ai ajouté tous les voisins non visités en tant qu'enfants du nœud actuel, comment puis-je accéder au nœud suivant?Génération de la forêt de graphes BFS
EDIT:
Il ressemblerait à quelque chose comme ça?
public void bfs(Tree parent)
{
Iterator<V> ni = neighbors((V) parent.value());
if(ni.hasNext())
{
while(ni.hasNext())
{
V next = ni.next();
GraphMatrixVertex<V> vert = dict.get(next);
if(!vert.isVisited())
parent.addChild(new Tree(next));
}
}
}
Où se passe l'appel récursif?
voir mon édition ci-dessus;) Ok je – Nathan
a modifié aussi. J'espère que ça aide. –
Je ne sais pas pourquoi vous avez des variables de score et de chemin. Ce n'est pas quelque chose que vous considérez dans un algorithme bfs. En ce qui concerne la ligne 'if (ni.hasNext()), je l'ai laissée là pour des raisons de récursivité, de sorte que quand elle est appelée sur un noeud sans voisins, elle ne renvoie rien. Juste pour clarifier cependant, je produis un arbre représentant une recherche de bfs d'un graphique. Je ne veux pas traverser un arbre et produire une liste. – Nathan