J'essayais d'implémenter un algorithme de traversée d'arbre similaire à BFS, mais avec une petite modification. Chaque fois que nous passons à la ligne suivante, nous devrions commencer par l'enfant le plus proche (enfant du dernier nœud de la rangée) au lieu du nœud le plus éloigné de la ligne suivante. Comment puis-je modifier le code BFS pour y parvenir?Traversée de l'arbre BFS modifié
Voici le code BFS d'origine:
public void bfs()
{
// BFS uses Queue data structure
Queue q = new LinkedList();
q.add(rootNode);
visited[rootNode] = true;
printNode(rootNode);
while(!q.isEmpty())
{
int n, child;
n = (q.peek()).intValue();
child = getUnvisitedChildNode(n); // Returns -1 if no unvisited niode left
if (child != -1)
{ // Found an unvisted node
visited[child] = true; // Mark as visited
printNode(child);
q.add(child); // Add to queue
}
else
{
q.remove(); // Process next node
}
}
}
Voici comment ma modification souhaitée BFS devrait fonctionner:
Une pile au lieu d'une file d'attente devrait faire l'affaire. –
Cela ressemble à un motif en zigzag. Est-ce que c'est ce que tu veux? –
Pouvez-vous poster à quoi ressemblera la sortie une fois votre implémentation réussie? Je pense que sur la base de ce que je comprends, il devrait être quelque chose comme 0, 3,4,5,2,6,7,1,8,9 – zenwraight