队列和广度优先(BFS)搜索

BFS:全称Breadth First Search,宽度优先搜索,又称广度优先搜索
队列和广度优先(BFS)搜索
如上图:
使用 BFS 来找出根结点 A 和目标结点 G 之间的最短路径。
步骤如下:
1:根节点A节点放入队列,将与A相邻的节点放入队列即队列中元素为ABCD
2:A出队,将与队头B相邻的节点放入队列,此时队列元素为BCDE
3:B出队,将与队头C相邻的元素放入队列,此时队列元素为CDEF
4:C出队,将与队头D相邻的元素放入队列,此时队列元素为DEFG,此时所有定点都被访问过。
由上可知,BFS的搜索顺序为访问顺序为A-B-C-D-E-F-G

注意:与树的层序遍历类似,越是接近根结点的结点将越早地遍历。
结点的处理顺序与它们添加到队列的顺序是完全相同的顺序,即先进先出(FIFO)。这就是我们在 BFS 中使用队列的原因。

自我感悟:队列之所以能找到最短路径,因为直至连通图中所有顶点都被访问一次,故能找到最短路径。