通过队列实现

补充

补充:广度优先搜索(BFS,Breadth-First Search)以队列为辅助结构,从起点出发,按"层"逐层扩展,先访问完所有距离为 1 的节点,再访问距离为 2 的节点……时间复杂度 O(V + E)。常用于:

  • 无权图最短路径;
  • 树/图的层序遍历;
  • 二叉树的最小深度、岛屿问题等。
function bfs(graph, start) {
  const visited = new Set([start]);
  const queue = [start];
  while (queue.length) {
    const node = queue.shift();
    console.log(node);
    for (const nei of graph[node] || []) {
      if (!visited.has(nei)) {
        visited.add(nei);
        queue.push(nei);
      }
    }
  }
}

来源整理自:我的有道云笔记