Ваш код немного неясен. Что именно возвращает graph.neighbors
?
Как правило, для создания BFS вы хотите добавить children текущего узла в очередь, а не его соседей. Поскольку все идет в очередь, это обеспечит посещение каждого узла в дереве в правильном порядке. Предполагая, что это дерево, а не общий граф, это также гарантирует, что вы не посетите узел более одного раза, что позволит вам удалить проверки до isVisited
.
Итак, вытащите следующий узел из очереди, добавьте всех его дочерних элементов в очередь, посетите узел и повторяйте, пока очередь не станет пустой.