广度优先搜索使用队列,把还没访问过的结点依次放进队列,再拿出队头结点作为当前的遍历节点
模板如下:
//1. 当不需要记录当前遍历到第几层时
while queue 不空:
cur = queue.pop()
for 节点 in cur的所有相邻节点:
if 该节点有效且未访问过:
queue.push(该节点)
//2. 加入了level用于记录层数
level = 0
while queue 不空:
size = queue.size()
while (size --) {
cur = queue.pop()
for 节点 in cur的所有相邻节点:
if 该节点有效且未被访问过:
queue.push(该节点)
}
level ++;
一般求最短路径时会用到广度优先搜索