개념

이동경로 순서 비교

Untitled

Untitled

구현 방식

시간 복잡도

두 방식 모두 조건 내의 모든 노드를 검색한다는 점에서 시간 복잡도는 동일합니다.

DFS와 BFS 둘 다 다음 노드가 방문하였는지를 확인하는 시간과 각 노드를 방문하는 시간을 합하면 됩니다.

코드

const DFS = function (node) {
  let answer = "";
  const visited = new Array(N + 1).fill(false, 0, N + 1);
  const stack = [];

  stack.push(node);

  while (stack.length > 0) {
    const cur = stack.pop();

    if (!visited[cur]) {
      visited[cur] = true;
      answer += cur + " ";

      for (let next = N; next >= 1; next--) {
        if (!visited[next] && graph[cur][next]) {
          stack.push(next);
        }
      }
    }
  }

  return answer;
};
const BFS = function (node) {
  let answer = "";
  const visited = new Array(N + 1).fill(false, 0, N + 1);
  visited[node] = true;

  const Queue = [];
  Queue.push(node);

  while (Queue.length > 0) {
    const cur = Number(Queue.shift());
    answer += cur + " ";

    for (let next = 1; next <= N; next++) {
      if (!visited[next] && graph[cur][next]) {
        visited[next] = true;
        Queue.push(next);
      }
    }
  }

  return answer;
};