图的数据结构及遍历算法
来源:互联网 发布:cad手机制图软件 编辑:程序博客网 时间:2024/06/11 23:07
图的邻接矩阵结构:
public class GraphArray<T> { private int[][] edges; // 邻接矩阵 private T[] vertexs; // 顶点 private int[] visited; // 是否访问 private int number; // 顶点个数 public GraphArray(int[][] edges, T[] vertexs) { if (edges.length != edges[0].length) { throw new RuntimeException("矩阵不符合规范"); } if (edges.length != vertexs.length) { throw new RuntimeException("矩阵不符合规范"); } this.edges = edges; this.vertexs = vertexs; number = edges.length; visited = new int[number]; }}
深度优先递归算法
// 深度优先递归算法void DFSTraverse() { visited = new int[number]; for (int i = 0; i < number; i++) { if (visited[i] == 0) { DFS(i); } }}void DFS(int i) { visited[i] = 1; System.out.print(vertexs[i] + " "); for (int j = 0; j < number; j++) { if (visited[j] == 0 && edges[i][j] == 1) { DFS(j); } }}
深度优先非递归算法:
// 深度优先非递归算法void depth() { Stack<Integer> s = new Stack<Integer>(); for (int i = 0; i < number; i++) { if (visited[i] == 0) { // 访问顶点并入栈 s.add(i); visited[i] = 1; while (!s.isEmpty()) { int j = s.pop();// 栈顶元素出栈 System.out.print(vertexs[j] + " "); for (int k = 0; k < number; k++) { // 栈顶元素的邻接点(未被访问的) if (edges[j][k] == 1 && visited[k] == 0) { // 访问此邻接点并入栈 s.add(k); visited[k] = 1; } } } } }}
广度优先算法:
// 广度优先算法void BFSTraverse() { visited = new int[number]; Queue<Integer> queue = new LinkedList<Integer>(); for (int i = 0; i < number; i++) { if (visited[i] == 0) { // 访问顶点并入队 visited[i] = 1; System.out.print(vertexs[i] + " "); queue.add(i); while (!queue.isEmpty()) { int j = queue.poll();// 队头元素出队 for (int k = 0; k < number; k++) { // 队头元素的邻接点(未被访问) if (edges[j][k] == 1 && visited[k] == 0) { // 访问此邻接点并入队 visited[k] = 1; System.out.print(vertexs[k] + " "); queue.add(k); } } } } }}
阅读全文
0 0
- 数据结构--------图的遍历算法及实现
- 图的数据结构及遍历算法
- 数据结构:图相关概念及遍历算法
- 数据结构_7:图算法 :图的遍历
- 【数据结构与算法】图的遍历
- [数据结构与算法]图的遍历
- 数据结构与算法--图的遍历
- 【数据结构与算法】图 遍历
- 关于图的邻接表存储建立方式及深度遍历的个人理解以及数据结构7.22的算法
- 图的存储结构及遍历算法
- C语言基本数据结构之三(图的广度及深度遍历,求单源最短路径的Dijkstra算法)
- 【数据结构-图】图的建立以及广度优先遍历算法
- 图的遍历 - 数据结构
- 数据结构---->图的遍历
- 图的遍历 - 数据结构
- 数据结构 - 图的遍历
- 【数据结构】图的遍历
- 数据结构-图的遍历
- 10个最受欢迎的编程挑战网站
- Linux常用命令整理(一)
- Sublime Text3的简单配置
- 指针 数组 函数
- Android-闹钟-AlarmManager-后台服务
- 图的数据结构及遍历算法
- C++ 协程与网络编程
- springboot jpa+mybatis实战应用
- JSON.parseObject将字符串转为bean对象
- JavaScript 资源大全中文版
- python 非IDE debug
- TabLayout横向滑动
- 设置环境变量
- [TensorFlow] demo1 完整的代码和运行结果