BFS(Breadth-Fisrt-Search) 정의 DFS는 너비 우선 탐색이라고도 부르며 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘입니다. DFS는 큐 자료구조(혹은 재귀함수)를 이용하며, 구체적인 동작 과정은 다음과 같습니다. 탐색 시작 노드를 큐에 삽입하고 방문처리를 합니다. 큐에서 노드를 꺼낸 뒤에 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문처리 합니다. 더 이상 2번 과정을 할 수 없을 때까지 반복합니다. 예시 const graph = { A: ["B", "C"], B: ["A", "D"], C: ["A", "G", "H", "I"], D: ["B", "E", "F"], E: ["D"], F: ["D"], G: ["C"], H: ["C"], I: ["C", "J"], J: ["I"], }; const BFS = (graph, startNode) => { const visited = []; // 탐색을 마친 노드들 let needVisit = []; // 탐색해야할 노드들 needVisit.push(startNode); // 노드 탐색 시작 while (needVisit.length !== 0) { // 탐색해야할 노드가 남아있다면 const node = needVisit.shift(); // queue이기 때문에 선입선출, shift()를 사용한다. if (!visited.includes(node)) { // 해당 노드가 탐색된 적 없다면 visited.push(node); needVisit = [...needVisit, ...graph[node]]; } } return visited; }; console.log(BFS(graph, "A")); // ["A", "B", "C", "D", "G", "H", "I", "E", "F", "J"]