先附上BFS走迷宫的核心伪代码:
while(!q.empty()){
int now=q.front();//取队首元素
q.pop();//弹出队首元素
步骤1.找出当前节点走一步可以接触到的地方即邻接点
步骤2.将步骤1找到的节点入队
}
仔细看看这段代码有什么不对的地方?在步骤2的时候没有判断找到的这些邻接点是否已经访问过(因为有访问过说明已经在队列中)
所以,已访问过的节点仍然会入队,这样会造成队列永远不会空即死循环
结论:所以我们要设置一个数组记录这些已经访问过的节点