图的俩种遍历方式
来源:互联网 发布:白金数据 东野圭吾 编辑:程序博客网 时间:2024/06/10 14:05
代码为输出连通集
时间复杂度:
采用邻接表存储图:DFS和BFS都为O(N+E)
采用邻接矩阵存储:DFS和BFS都为O(N^2);
设有数据结构
struct vertex{ int id; vector<int> adjacencyList;//邻接表};//每个顶点.
设有数组
vector<bool>visited(N,false);//N为顶点 vector<vertex>vertexList(N);
则有以下遍历方式
void dfs(int s,vector<bool>&visited,vector<int>&path,vector<vertex>vertexList){ vector<int> v = vertexList[s].adjacencyList; for (int i=0; i<v.size(); ++i) { if(visited[v[i]]==false){ path.push_back(v[i]); visited[v[i]] = true; dfs(v[i], visited, path, vertexList); } }}void bfs(int s,vector<bool>&visited,vector<int>&path,vector<vertex>vertexList){ queue<int>q; q.push(s); while (!q.empty()) { int cur = q.front(); q.pop(); vector<int> v = vertexList[cur].adjacencyList; for (int i=0; i<v.size(); ++i) { if(visited[v[i]]==false){ path.push_back(v[i]); visited[v[i]] = true; q.push(v[i]); } } }}
0 0
- 图的俩种遍历方式
- 遍历的2种方式
- java图的遍历方式(深度遍历、广度遍历)
- java图的遍历方式(深度遍历、广度遍历)
- Map俩种遍历方式
- 邻接矩阵存储图的两种遍历方式
- 集合类的4种遍历方式Block遍历,快速遍历,枚举器,普通遍历
- List的遍历的三种方式
- 图的两种遍历方式--深度与广度优先遍历
- java中map遍历的四种遍历方式
- list的四种遍历方式,遍历list集合
- set的三种遍历方式,set遍历元素
- map的四种遍历方式,map遍历元素
- 图的存储方式和遍历
- 二叉树的三种遍历方式
- HashMap遍历的两种方式
- 遍历数组的两种方式
- 遍历HashMap的常用两种方式
- Git命令学习之旅——分支
- 常见的代码规范及逻辑
- leetcode---Merge Two Sorted Lists
- 贪心算法总结
- ISBN号码
- 图的俩种遍历方式
- mini2440基于boa服务器通过WEB控制GPIO
- Java高级部分之线程重点总结(下)
- free命令
- C++虚函数表小记
- 面向过程到面向对象-入门,心得(实例剖析)
- CSU 1712--Refract Facts
- 全版本Genymotion模拟器创建过程所需的.ova文件下载地址说明
- python中的装饰器@staticmethod和@classmethod