알고리즘
[그래프 탐색] BFS
슈크림 붕어빵
2024. 3. 18. 11:31
BFS(Breadth-First Search) - 너비 우선 탐색
queue - 선입 선출 (FIFO - First In First Out)
작동 방식
- 시작 노드를 큐에 넣는다.
- 큐가 빌 때까지 아래과정을 반복한다.
- 큐 맨 위 노드를 꺼낸다.
- 해당 노드 방문 여부 체크 => 했다면 패스
- 방문 안했다면, 이를 방문 처리 후 해당 정점과 이어진 정점들을 큐에 넣는다.
예시 1
경로


스택 / 큐


예시 2
경로


스택 / 큐


코드
const bfs = (startNode) => {
let visited = new Set();
let needVisit = [startNode]; //큐역할
let results = [];
while (needVisit.length) {
let node = needVisit.shift(); //맨 앞에서 빼기
if (!visited.has(node)) {
// 해당 노드 방문이 처음이라면
results.push(node);
visited.add(node);
if (graph[node]) needVisit = [...needVisit, ...graph[node]]; //맨 뒤에 넣기
}
}
console.log(results.join(" "));
};
참고 문제