图的遍历
来源:互联网 发布:快消品行业数据 编辑:程序博客网 时间:2024/06/08 10:42
一、深度优先搜索(DFS)
void DFS(int V){ visit[V]=true; for(V 的每一个邻接点 W){ if(!visit[W]){ DFS(W); } }}
二、广度优先搜索(BFS)
void BFS(int V){ visit[V]=true; Q.push(V); while(!Q.empty()){ V=Q.pop(); for(V 的每一个邻接点 W){ if(!visit[W]){ visit[W]=true; Q.push(W); } } }}
三、总结
1.图的遍历其本质是所有非顺序类数据结构的遍历。遍历数组中的元素只需要一个for就够了,遍历图中的元素,就需要使用DFS或BFS。需要访问图中的所有元素——>DFS或BFS。
2.DFS是通过递归定义的,实现起来相对比较简洁方便。BFS运用了队列这种数据结构,把递归改成了非递归,节约了一定的内存空间和调用时间。
3.图的遍历核心算法都比较简单,主要应用时需要有分块的思想。实现图的遍历的前提是需要一个bool数组,表示该结点是否遍历过,这个可以在调用图的算法前定义。还有一个前提是知道如何通过一个结点访问相邻结点。满足以上2点,就可以调用遍历算法实现图的遍历了。
4.图不连通的时候,可以在遍历算法外套一个for,遍历所有结点,对于未访问过的结点,都调用一次遍历算法即可完成对于全图的遍历。
5.核心:(1)bool数组保存访问信息;(2)已实现从一个结点访问所有相邻结点的代码
声明:上述代码来着中国大学mooc浙大的《数据结构》
阅读全文
0 0
- 图:图的遍历(深度优先遍历、广度优先遍历)
- java图的遍历方式(深度遍历、广度遍历)
- java图的遍历方式(深度遍历、广度遍历)
- 图的遍历(深度遍历和广度遍历)
- 图的遍历:深度优先遍历和广度优先遍历
- 图的 深度遍历 广度遍历
- 图的深度遍历和广度遍历
- 图的遍历(深度优先遍历)
- 图的遍历:深度优先遍历
- 图的遍历:宽度优先遍历
- 图的广度遍历和深度遍历
- 图的深度遍历和广度遍历
- 图的遍历-深度优先遍历
- 图的遍历-广度优先遍历
- 图的dfs遍历和bfs遍历
- 图的深度遍历和广度遍历
- 图的遍历算法-马遍历棋盘
- 图的遍历算法-马遍历棋盘
- 冒泡,选择,插入排序
- python绘图---matplotlib几个简单例子
- 2017年最新JRebel+Eclipse热部署教程
- 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术
- c 十进制、十六进制和BCD的相互转换
- 图的遍历
- 喷水装置(一)
- POJ
- ubuntu安装docker
- 不可不知的SUSE Linux二三事
- Blog的开启之路
- jquery表单校验插件
- 34.开源项目--git标签的基本概念
- Hdu 3949 XOR 线性基