자료구조 및 알고리즘 구현
- Graph
1 ---- 2
|\ |
| \ |
| \ |
| \ |
3 ---- 4
- 스택의 top에 있는 정점을 기준으로 간선이 연결되어있고 아직 방문하지 않은 정점을 찾는다.
- 조건에 맞는 정점을 찾는다면 해당 정점을 스택에 넣은 후 break를 건다.
- 연결된 간선이 없고, 방문하지 않은 정점을 찾지 못한다면 pop.
2번에서 break를 걸어줌으로써, 바로 DFS 탐색이 진행된다.
현재 정점을 기준으로 탐색 중 조건에 맞는 정점을 찾는다면 그 정점을 기준으로 다시 탐색을 한다.
이를 반복함으로써 위 DFS의 그림처럼 깊이 탐색을 할 수 있게 되는 것이다.
3번에서 경우는 DFS와 BFS를 비교하는 그림에서 보듯 1, 2, 3을 탐색한 후 더이상 탐색할 수 없다.
이런 경우를 다시 돌아가기 위해 pop을 하는 것이다.