BFS – 广度优先遍历 一种利用队列实现的搜索算法。简单来说,其搜索过程和 “湖面丢进一块石头激起层层涟漪” 类似。形象一点如下: 总的来说,就是先遍历离根节点近的,一层一层的。 程序思路 函数传入需要遍历的树/图的根节点,然后将根节点放入队列,开始循环操作,只要队不是空的,就取队首并且将队首元素所连接的点放入队中。 要注意的是,图中可能出现环,可能会陷入死循环,所以要定义一个数组记录节点是否被访问过。 实现方法 – 存储方式为点对点 广度优先遍历,参数v是开始遍历的点
BFS – 广度优先遍历 一种利用队列实现的搜索算法。简单来说,其搜索过程和 “湖面丢进一块石头激起层层涟漪” 类似。形象一点如下: 总的来说,就是先遍历离根节点近的,一层一层的。 程序思路 函数传入需要遍历的树/图的根节点,然后将根节点放入队列,开始循环操作,只要队不是空的,就取队首并且将队首元素所连接的点放入队中。 要注意的是,图中可能出现环,可能会陷入死循环,所以要定义一个数组记录节点是否被访问过。 实现方法 – 存储方式为点对点 广度优先遍历,参数v是开始遍历的点
点对点 建立一个数组,用下标表示不同的点,用其内容表示这个点所连接的点。例如数组名为graph,然后可以用graph[0] = 1表示0点可以通向1点。 其中,如果一个点可以连向多个点,可以使用二维数组存储,例如graph[0][0] = 1和graph[0][1] = 2表示0点所连接的点有1点和2点。通常,这个二维数组的第二维不会被填满,所以,可以使用向量作为第二维,像下面一样: #include <vector> using namespace std; const int M
在这里,可以发布其他的任何有关信息内容,不限于软件和硬件等。