图的深度优先搜索DFS
来源:互联网 发布:分众传媒江南春 知乎 编辑:程序博客网 时间:2024/06/05 16:48
import java.util.Stack;public class DFSDemo {public static void main(String[] args) {// TODO Auto-generated method stubchar[] vertices = {'A', 'B', 'C', 'D', 'E'};int[][] edges = {{0, 1, 0, 1, 0},{1, 0, 1, 0, 0},{0, 1, 0, 0, 0},{1, 0, 0, 0, 1},{0, 0, 0, 1, 0}};/*第二组测试数据->输出结果->A B F H C D G I E * char[] vertices = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};int[][] edges = {{0, 1, 1, 1, 1, 0, 0, 0, 0},{1, 0, 0, 0, 0, 1, 0, 0, 0},{1, 0, 0, 0, 0, 0, 0, 0, 0},{1, 0, 0, 0, 0, 0, 1, 0, 0},{1, 0, 0, 0, 0, 0, 0, 0, 0},{0, 1, 0, 0, 0, 0, 0, 1, 0},{0, 0, 0, 1, 0, 0, 0, 0, 1},{0, 0, 0, 0, 0, 1, 0, 0, 0},{0, 0, 0, 0, 0, 0, 1, 0, 0}};*/boolean[] isVisited = new boolean[vertices.length];Stack<Integer> stack = new Stack<Integer>();stack.push(0);isVisited[0] = true;System.out.print(vertices[0] + " ");while(!stack.isEmpty()) {int v = getAdjUnvisitedVertex(stack.peek(), edges, isVisited);if(v == -1) {stack.pop();} else {stack.push(v);isVisited[v] = true;System.out.print(vertices[v] + " ");}}System.out.println();}public static int getAdjUnvisitedVertex(int cur, int[][] edges, boolean[] isVisited) {// TODO Auto-generated method stubfor(int i = 0; i < edges[cur].length; i++) {if(edges[cur][i]==1 && !isVisited[i]) {return i;}}return -1;}}
输出结果:
A B C D E
0 0
- 图的遍历---深度优先搜索(DFS)
- 图的深度优先搜索DFS
- 图的深度优先搜索算法DFS
- 图的深度优先搜索(DFS)
- DFS--深度优先搜索--图的邻接矩阵
- 图的深度优先搜索算法DFS
- 图的深度优先搜索算法DFS
- 【深度优先搜索(DFS)算法】数据结构之图的深度优先搜索算法DFS初试
- 深度优先搜索 DFS
- 深度优先搜索 DFS
- DFS 深度优先搜索
- DFS 深度优先搜索
- 深度优先搜索(DFS)
- 深度优先搜索(DFS)
- 深度优先搜索DFS
- DFS深度优先搜索
- 深度优先搜索(DFS)
- dfs深度优先搜索
- VS2012调用CRF++
- LINUX 移植系列(一)
- 输出单链表中倒数第k个结点(Java版)
- 访问者模式
- Tomcat开启https
- 图的深度优先搜索DFS
- LINUX 移植系列(二)
- 图的广度优先搜索BFS
- Maven 编译打包时如何忽略测试用例
- 源码、反码、补码详解
- PB中一些技巧
- Android之旅_相对布局
- Android学习笔记之Menu的ShowAsAction属性的设置
- git 忽略特殊文件