DFS란
한곳만 끝까지 파다가 아님 되돌아 오는 방식, Stack 자료구조를 사용
-
비선형구조인 그래프 구조는 그래프로 표현된 모든 자료를 빠짐없이 검색하는 것이 중요
-
두가지 방법이 있음
- 깊이우선탐색(Depth First Search, DFS)(Stack사용)
- 넓이 우선 탐색(Breadth Frist Search, BFS)(Queue사용)
DFS 탐색 방법
- 시작점(Root)에서 한 방향으로 갈 수 있는 경로가 있는 마지막까지 탐색함
- 더이상 갈 곳이 없게 되면(Leaf Node만나면) 가장 마지막에 있었던 갈림길에서의 Node를 (Leaf Node입장에서의 Root node)로 돌아옴
- 다른 방향의 Node로 탐색을 계속 반복하여 결국 모든 노드(정점)을 방문
Stack 자료구조
를 이용해야 하는이유는 가장 마지막에 만났던 갈림길에서 다시 바로직전의 Node로 되돌아가서 방문하지 않은 다른 Node를 방문해야 하기 때문에 후입선출(LIFO)구조의 Stack 자료구조가 적절함
- 경로를 역추적할 때 필요한 Stack 자료구조가 하나 필요하고, 방문 했는지 여부를 파악할 visit[] 배열이 필요하다