BFS
1. BFS 基础版
- 广度优先搜索(BFS)的一个常见应用是找出从根结点到目标结点的最短路径。
- 运用队列来处理数据
在第一轮中,我们处理根结点。在第二轮中,我们处理根结点旁边的结点;在第三轮中,我们处理距根结点两步的结点;等等等等。
越是接近根结点的结点将越早地遍历
因此:如果在第 k 轮中将结点 X 添加到队列中,则根结点与 X 之间的最短路径的长度恰好是 k。也就是说,第一次找到目标结点时,你已经处于最短路径中。
二叉树层先
https://leetcode-cn.com/leetbook/read/queue-stack/kyozi/
Pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair
可用 First Second 获取第一个变量和第二个变量
2. BFS 森林版
可能有不连通的树,此时需要循环处理
for(int i = 0;i < G.vsize;i++) // 遍历顶点是否全都访问过,有没访问过的重新执行一遍 BFS
{
if(vis[i] == 0) BFS(i);
}
https:/leetcode-cn.com/problems/open-the-lock/solution/wo-xie-liao-vi-tao-bfs-suan-fa-kuang-jia-ian-dao-/557314