Traversal of graph of Java algorithm (adjacency matrix)

From , 5 Years ago, written in Java, viewed 106 times.
URL https://pastebin.vip/view/1ce9168a
  1. package com.wzs;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.Queue;
  5.  
  6. // 图的遍历
  7. public class Graph {
  8.         // 邻接矩阵存储图
  9.         // --A B C D E F G H I
  10.         // A 0 1 0 0 0 1 1 0 0
  11.         // B 1 0 1 0 0 0 1 0 1
  12.         // C 0 1 0 1 0 0 0 0 1
  13.         // D 0 0 1 0 1 0 1 1 1
  14.         // E 0 0 0 1 0 1 0 1 0
  15.         // F 1 0 0 0 1 0 1 0 0
  16.         // G 0 1 0 1 0 1 0 1 0
  17.         // H 0 0 0 1 1 0 1 0 0
  18.         // I 0 1 1 1 0 0 0 0 0
  19.  
  20.         // 顶点数
  21.         private int number = 9;
  22.         // 记录顶点是否被访问
  23.         private boolean[] flag;
  24.         // 顶点
  25.         private String[] vertexs = { "A", "B", "C", "D", "E", "F", "G", "H", "I" };
  26.         // 边
  27.         private int[][] edges = {
  28.                         { 0, 1, 0, 0, 0, 1, 1, 0, 0 }, { 1, 0, 1, 0, 0, 0, 1, 0, 1 }, { 0, 1, 0, 1, 0, 0, 0, 0, 1 },
  29.                         { 0, 0, 1, 0, 1, 0, 1, 1, 1 }, { 0, 0, 0, 1, 0, 1, 0, 1, 0 }, { 1, 0, 0, 0, 1, 0, 1, 0, 0 },
  30.                         { 0, 1, 0, 1, 0, 1, 0, 1, 0 }, { 0, 0, 0, 1, 1, 0, 1, 0, 0 }, { 0, 1, 1, 1, 0, 0, 0, 0, 0 }
  31.                         };
  32.  
  33.         // 图的深度遍历操作(递归)
  34.         void DFSTraverse() {
  35.                 flag = new boolean[number];
  36.                 for (int i = 0; i < number; i++) {
  37.                         if (flag[i] == false) {// 当前顶点没有被访问
  38.                                 DFS(i);
  39.                         }
  40.                 }
  41.         }
  42.  
  43.         // 图的深度优先递归算法
  44.         void DFS(int i) {
  45.                 flag[i] = true;// 第i个顶点被访问
  46.                 System.out.print(vertexs[i] + " ");
  47.                 for (int j = 0; j < number; j++) {
  48.                         if (flag[j] == false && edges[i][j] == 1) {
  49.                                 DFS(j);
  50.                         }
  51.                 }
  52.         }
  53.  
  54.         // 图的广度遍历操作
  55.         void BFSTraverse() {
  56.                 flag = new boolean[number];
  57.                 Queue<Integer> queue = new LinkedList<Integer>();
  58.                 for (int i = 0; i < number; i++) {
  59.                         if (flag[i] == false) {
  60.                                 flag[i] = true;
  61.                                 System.out.print(vertexs[i] + " ");
  62.                                 queue.add(i);
  63.                                 while (!queue.isEmpty()) {
  64.                                         int j = queue.poll();
  65.                                         for (int k = 0; k < number; k++) {
  66.                                                 if (edges[j][k] == 1 && flag[k] == false) {
  67.                                                         flag[k] = true;
  68.                                                         System.out.print(vertexs[k] + " ");
  69.                                                         queue.add(k);
  70.                                                 }
  71.                                         }
  72.                                 }
  73.                         }
  74.                 }
  75.         }
  76.  
  77.         // 测试
  78.         public static void main(String[] args) {
  79.                 Graph graph = new Graph();
  80.                 System.out.println("图的深度遍历操作(递归):");
  81.                 graph.DFSTraverse();
  82.                 System.out.println("\n-------------");
  83.                 System.out.println("图的广度遍历操作:");
  84.                 graph.BFSTraverse();
  85.         }
  86. }
  87.  
  88.  
  89. //java/6692

Reply to "Traversal of graph of Java algorithm (adjacency matrix)"

Here you can reply to the paste above

captcha

https://burned.cc - Burn After Reading Website