问题
用广度优先搜索从图G=<V,E>的顶点v0开始遍历所有顶点。
解法
广度优先搜索需要设置一个队列queue,然后进行以下操作:
(1) 初始时将v0加入队列queue中作为等待访问的顶点,并染红;
(2) 重复从队列queue中取出头节点vi访问,将vi的所有邻节点都加入队列queue中作为下次等待访问的顶点,并染红;
重复第(2)步操作直到queue为空,算法结束。下图演示搜索过程:
顶点访问的顺序为[0,4,5,3,1,2]。广度优先搜索时间复杂度为O(∥V∥)。
Introduction To Algorithms
源码
BreadthFirstSearch.h
BreadthFirstSearch.cpp
测试
BreadthFirstSearchTest.cpp