美文网首页
算法_图论_深度优先遍历_递归(Java)

算法_图论_深度优先遍历_递归(Java)

作者: StayHungriest | 来源:发表于2019-10-30 17:26 被阅读0次
1. 写在前面

作为一个初步接触的萌新,我认为很有必要将我学习算法的心路历程给记录下来。
记录也是笔记,方便以后的复习,同时提高我的写作能力。
而且也能起到复习数据结构知识的作用,毕竟当时没怎么学好=.=。

先从图论开始吧

2. 直接代码

无向图的遍历之深度优先_递归
这里选择使用邻接矩阵来表示图

public class RecursionDfs {
    //初始化邻接矩阵
    static int[][] graph = {
            {0,1,1,0,0,0,0,0},
            {1,0,0,1,1,0,0,0},
            {1,0,0,0,0,1,1,0},
            {0,1,0,0,0,0,0,1},
            {0,1,0,0,0,0,0,1},
            {0,0,1,0,0,0,1,0},
            {0,0,1,0,0,1,0,0},
            {0,0,0,1,1,0,0,0},
    };
    
    //是否访问
    static boolean[] isVisited = new boolean[8];
    
    //主方法
    public static void main(String[] args) {
        for(int i = 0; i < isVisited.length; i++) {//要这个循环,是因为此图可能不止一个连通分量
            if(!isVisited[i]) {
                dfs(i);//访问
            }
        }
    }
    
    //深度优先遍历算法
    public static void dfs(int edge) {
        isVisited[edge] = true;//设置已访问
        System.out.println("v" + edge);//访问输出语句
        for(int i = 0; i<isVisited.length; i++) {//遍历每个顶点
            if(graph[edge][i] == 1 && !isVisited[i]) {//==1表示与此顶点有连线,!isVisited[i]表示此顶点还未访问,则进行递归访问
                    dfs(i);//递归
            }
        }
    }
}

具体图


程序中的图.png

相关文章

网友评论

      本文标题:算法_图论_深度优先遍历_递归(Java)

      本文链接:https://www.haomeiwen.com/subject/aqcavctx.html