BFS

1. BFS 基础版

在第一轮中,我们处理根结点。在第二轮中,我们处理根结点旁边的结点;在第三轮中,我们处理距根结点两步的结点;等等等等。
越是接近根结点的结点将越早地遍历
因此:如果在第 k 轮中将结点 X 添加到队列中,则根结点与 X 之间的最短路径的长度恰好是 k。也就是说,第一次找到目标结点时,你已经处于最短路径中。

二叉树层先
https://leetcode-cn.com/leetbook/read/queue-stack/kyozi/

image.png

image.png
image.png

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