bfs 需要借助队列来实现
- 初始化时把起始点放到队列中,并标记起点访问
- 如果队列不为空,从队列中取出一个元素 x , 否则算法结束
- 访问和 x 相连的所有点v, 如果v没有被访问,把 v 入队,并标记已经访问
- 重复执行步骤 2
bfs 是分层搜索,因此,第一次搜索到终点的时候,当前搜索的层数就是最短路径长度void bfs(起始点) {
将起始点放入队列;
标记起点访问;
while (如果队列不为空) {
访问队列中队首元素x;
删除队首元素;
for (x 所有相邻点) {
if(该点未被访问过且合法){
将该点加入队列末尾;
}
}
}
队列为空,广搜结束;
}