깊이 우선 탐색(Depth-Firset Search)
시작 정점에서 시작하여 특정 경로를 따라 가능한 멀리 있는 정점을 재귀적으로 먼저 방문하는 방식
더 방문할 정점이 없어지면 다른 경로를 찾아 다시 멀어지는 방향으로 탐색을 반복함
**백트래킹(backtracking)**에 활용됨
재귀 혹은 stack을 활용하여 구현
완전 탐색(순서 기반), 특정 조건의 충족 혹은 재귀적인 구조를 활용할 때 적합함
void DFS(int node) {
visited[node] = true;
for (int neighbor : graph[node]) {
if (!visited[neighbor]) {
DFS(neighbor);
}
}
}