Что не так в обходе этого графа DFS (используя рекурсивный подход)? - PullRequest
0 голосов
/ 04 января 2019

Может ли кто-нибудь помочь мне прояснить мое понимание DFS с использованием рекурсивного подхода? enter image description here

На приведенном выше графике без направления, если я выполняю DFS с использованием рекурсивного подхода, выходные данные зависят отпри добавлении соседей вершины.

то есть для вершины 0, если соседи добавляются в последовательности вершин 8, 3 и 1. Тогда результат => 0 8 4 3 2 5 6 7 1

Проблема с этим результатом состоит в том, что между 6 и 7 нет связи. В этом случае этот результат действителен?

Но для Вершины 0, если соседи добавляются в последовательности Вершины 1, 3 &8. Тогда результат => 0 1 7 2 3 4 8 5 6, что имеет смысл.

Если я правильно понимаю, как мы можем написать стабильную DFS, используя рекурсию.

Здесьмой код, который я написал после прохождения вашего объяснения.

void dfsRecursion(Vertex startV){
        startV.setVisited(true);
        System.out.print(startV);
        for(Vertex v: startV.getNeighbors()){
            if (!v.isVisited()){
                dfsRecursion(v);
            }
        }
    }
...