탐색: 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정
노드 | 인접한 노드들 |
---|---|
1 | 2, 3 |
2 | 1, 5 |
3 | 1, 4, 5 |
4 | 3, 5 |
5 | 2, 3, 4 |
→ 각 노드 및 간선에 대하여 한 번씩만 확인가능!
노드 | 인접한 노드들 |
---|---|
A | B, C, D |
B | A |
C | A, E, F |
D | A, G |
E | C, H |
F | C |
G | D |
H | E |
노드 방문 순서: A → B → C → E → H → F → D → G
✓ 특정 방향으로 최대한 깊에 들어가서 빠져나오는 방식
// DFS 메서드 정의
function dfs(graph, v, visited){
// 현재 노드를 방문 처리
visited[v] = ture;
// 현재 노드와 연결된 다른 노드를 재귀적으로 방문
for(let i of graph[v]){
if(!visited[i]){
dfs(graph, i, visited);
}
}
}
// 각 노드가 연결된 정보를 표현
graph = [
[], // 편의성을 위해 0번 노드 사용하지 않음
[2, 3, 4],
[1],
[1, 5, 6],
[1, 7],
[3, 8],
[3],
[4],
[5]
];
// 각 노드가 방문된 정보를 표현
vistied = Array(9).fill(false);
// 정의된 DFS 함수 호출
dfs(graph, 1, visited);
→ 도달 가능한 끝 위치까지 도달했다면, 다시 최근의 "갈림길"로 돌아가서, 다른 위치로도 가보는 방식과 유사