java语言实现图的深度优先遍历
来源:互联网 发布:淘宝有快排吹 编辑:程序博客网 时间:2024/05/23 01:23
java语言实现图的深度优先遍历:
图的存储采用的是邻接矩阵存储的方式,对下面的无向图进行遍历
代码如下:
public class Deep {int count=0;public static void main(String args[]){Graph g=new Graph(8);g.PrintGraph();Deep deep=new Deep();deep.DFS_each(g, 8);System.out.println();System.out.println("连通分支数为:"+deep.count);}public void DFS_each(Graph g,int i){System.out.println("深度优先遍历顺序为:");for(int c=0;c<i;c++){if(g.nodelist[c].visited==false){DFS(g,c);count++;}}}public void DFS(Graph g,int i){System.out.print(g.nodelist[i].ch+" ");g.nodelist[i].setVisited(true);for(int j = 0;j<g.vexnum;j++){if((g.graph[i][j] == 1)&&(g.nodelist[j].isVisited()==false)){DFS(g,j);} }}}class Graph {public int[][] graph;public int vexnum;public Node[] nodelist;public Graph(int vexnum){//构造图this.vexnum=vexnum;graph=new int[vexnum][vexnum];addGraph(0, 1);addGraph(4, 1);addGraph(3, 1);addGraph(4, 5);addGraph(5, 6);addGraph(4, 0);addGraph(7, 2);nodelist=new Node[vexnum];String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";for(int size=0;size<vexnum;size++){nodelist[size]=new Node(str.charAt(size),false);}}public void addGraph(int x,int y){//添加边if (x==y||x>vexnum||y>vexnum){return;}else{graph[x][y]=1;graph[y][x]=1;}}public void PrintGraph(){//打印图String c="ABCDEFGHIJKLMNOPQRSTUVWXYZ";System.out.print(" ");for(int j=0;j<vexnum;j++){System.out.print(c.charAt(j)+" ");}System.out.println();for (int i=0;i<vexnum;i++){System.out.print(c.charAt(i)+" ");for(int j=0;j<vexnum;j++){System.out.printf("%3d",graph[i][j]);}System.out.println();}}public void PrintNode(){//打印节点for(int i=0;i<vexnum;i++){if (nodelist[i].visited==true){System.out.println(nodelist[i].ch);}}}}class Node{char ch;boolean visited;public Node(char ch,boolean visited){this.ch=ch;this.visited=visited;}public char getCh() {return ch;}public void setCh(char ch) {this.ch = ch;}public boolean isVisited() {return visited;}public void setVisited(boolean visited) {this.visited = visited;}}
代码运行结果如下:
阅读全文
0 0
- java语言实现图的深度优先遍历
- java语言实现图的深度优先遍历与广度优先遍历
- 用java语言实现图的广度优先遍历和深度优先遍历
- java语言实现图的深度优先遍历与广度优先遍历
- 图的深度优先遍历-C语言实现
- 图的邻接表存储 深度优先遍历 广度优先遍历 C语言实现
- 图的邻接矩阵存储 深度优先遍历 广度优先遍历 C语言实现
- 图的邻接表存储 深度优先遍历 广度优先遍历 C语言实现
- c语言实现图的深度优先遍历和广度优先遍历
- C语言实现图的邻接矩阵存储结构及深度优先遍历和广度优先遍历
- Java实现图的深度和广度优先遍历算法
- 图的深度优先遍历和广度优先遍历实现
- 图的深度优先遍历和广度优先遍历 Java实现
- Java实现图的遍历(深度优先与广度优先遍历)
- Java实现图的深度优先遍历和广度优先遍历
- java实现深度优先遍历
- JAVA-图的深度优先遍历
- 数据结构和算法之:图的深度优先和广度优先遍历及其Java实现
- 固态硬盘(samsung SSD 850 pro)相关问题
- Visual studio 2013 连接MySQL数据库的设置
- java中RSA加解密的实现
- 用Spark 2.2中的结构化流API处理Kafka数据-端到端
- uva 10391 compound words
- java语言实现图的深度优先遍历
- Javascript实现继承的方法
- 是用mina自定义解析器
- 一些框架的总结
- Spring Data JPA基础使用
- 新安装的Myeclipse创建新项目Configure build path
- 计算机基础——码制表示
- 问题集
- STM32F207 TIM1 比较输出 输出多路不同频率