基本介绍
广度优先搜索(BFS)的一个常见应用是找出从根结点到目标结点的最短路径。
通过一个示例来说明如何使用 BFS 来找出根结点 A 和目标结点 G 之间的最短路径。

模板
function BFC(root, target){let queue = [] // 核心数据结构let used = new Set() // 存放所有访问过的节点queue.push(root)used.add(root)let step = 0 // 记录遍历的层次// 当这一层的节点列表不为空,就要一直遍历while(!queue.length){let size = queue.length/* 遍历这一层的节点 */for(let i =0; i < size; i++){let cur = queue.shift()/* 划重点:这里判断是否到达终点 */if(cur === target) return step// 把每个节点的下一层节点加入到列表for(Node next : the neighbors of cur){if(next is not in used){queue.push(next)used.add(next)}}}/* 划重点:更新步数在这里 */step++;}}
