广度优先搜索遍历类似于树的按层次遍历的过程。假设从图中某个顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使用”先被访问的顶点的邻接点“先于”后被访问的顶点的邻接点“被访问,直至图中所有已被访问的顶点的邻接点都被访问到。若此时图中尚有顶点未被访问,则选图中一个未被访问的节点作为起始点,重复上述过程,直至图中所有顶点都被访问到为止。若用邻接表存储图,广度优先搜索的时间复杂度为o(n + e)。#include<iostream> #include<vector> #include<fstream> #include<queue> #include<time.h> using namespace std; void readGraph();//读取文件,存储图 void DFSTraverse();//图的深度优先搜索 void DFS(int v);//从某个顶点出发的深度优先搜索 int nodeNum;//图中顶点数 int edgeNum;//图中边数 vector<vector<int>> mGraph;//图的存储结构 bool *visited;//是否访问的当前节点的数组 //从文件中读取数据,存储在图中 void readGraph() { fstream fin("E:\\myData\\citeseerx.txt");//打开文件 fin>>nodeNum>>edgeNum;//读取边数和顶点数 mGraph.resize(nodeNum);//设置图中有多少个顶点 visited = new bool[nodeNum]; for(int i = 0; i < nodeNum; ++i) { visited[i] &
图的遍历之广度优先搜索
最新推荐文章于 2022-08-18 17:49:38 发布