BreadthFirstSearch 广度优先搜索

问题

用广度优先搜索从图G=<V,E>G = <V,E>的顶点v0v_0开始遍历所有顶点。

解法

广度优先搜索需要设置一个队列queuequeue,然后进行以下操作:

(1)(1) 初始时将v0v_0加入队列queuequeue中作为等待访问的顶点,并染红;

(2)(2) 重复从队列queuequeue中取出头节点viv_i访问,将viv_i的所有邻节点都加入队列queuequeue中作为下次等待访问的顶点,并染红;

重复第(2)(2)步操作直到queuequeue为空,算法结束。下图演示搜索过程:

顶点访问的顺序为[0,4,5,3,1,2][0, 4, 5, 3, 1, 2]。广度优先搜索时间复杂度为O(V)O(\| V \|)

Introduction To Algorithms

源码

BreadthFirstSearch.h

BreadthFirstSearch.cpp

测试

BreadthFirstSearchTest.cpp

Last updated