图算法――邻接矩阵的深搜DFS和广搜BFS

package com.java.struture;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Graph {
    private int [][]G;//图
    private int vnums;//顶点数
    private boolean[]visited;//记录已访问的点
    public Graph(int[][]G , int vnums){
        this.G = G;
        this.vnums = vnums;
        this.visited = new boolean[vnums+1];
    }
    private void dfs(int v){
        visited[v] = true;
        System.out.print(v+" ");
        for(int i = 0 ; i < vnums; i++){
            if(G[v][i]==1 && !visited[i])
                dfs(i);
        }
    }
    private void bfs(int v){
        List<Integer> list = new ArrayList<Integer>();
        list.add(v);
        while(!list.isEmpty()){
            v = list.remove(0);
            System.out.print(v+" ");
            visited[v] = true;
            for(int i = 0 ; i < vnums; i++){
                if(G[v][i] == 1 && !visited[i]){
                    list.add(i);
                    visited[i] = true;
                }
            }
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int vnums = sc.nextInt();
        int enums = sc.nextInt();
        int [][]G = new int[vnums][vnums];
        for(int i = 0; i < enums; i++){
            int u = sc.nextInt();
            int v = sc.nextInt();
            G[u][v] = 1;
            G[v][u] = 1;
        }
        Graph g = new Graph(G, vnums);
        g.bfs(0);
    }
}


你可能感兴趣的:(图,DFS,bfs,广搜,无向图,深搜)