java语言实现图的深度优先遍历
生活随笔
收集整理的這篇文章主要介紹了
java语言实现图的深度优先遍历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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;}}代碼運行結果如下:
總結
以上是生活随笔為你收集整理的java语言实现图的深度优先遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百练OJ:2767:简单密码
- 下一篇: 百练OJ:2972: 确定进制