用广度优先搜索从图的顶点开始遍历所有顶点。
广度优先搜索需要设置一个队列,然后进行以下操作:
初始时将加入队列中作为等待访问的顶点,并染红;
重复从队列中取出头节点访问,将的所有邻节点都加入队列中作为下次等待访问的顶点,并染红;
重复第步操作直到为空,算法结束。下图演示搜索过程:
顶点访问的顺序为。广度优先搜索时间复杂度为。
BreadthFirstSearch.h
BreadthFirstSearch.cpp
BreadthFirstSearchTest.cpp