栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

日撸java 三百行 (day 23 )图的深度优先遍历

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

日撸java 三百行 (day 23 )图的深度优先遍历

深度优先遍历可以借用一个辅助栈:

今天的测试用例(非强连通图):

首先选取顶点D为初始顶点:

接着根据邻接矩阵的信息把E压栈:

由于D已经被访问过,并且E没有与其余节点相连接,将E出栈,D同理:

 等D出栈后,队列为空,但是标记数组显示还有顶点未被访问,则程序接着运行:

 

 代码及运行效果:

    
    public String depthFirstTraversal(int paraStartIndex,boolean flag[]){
        ObjectStack tempStack=new ObjectStack();
        String resultString="";
        int tempNumNodes=connectivityMatrix.getRows();
        flag[paraStartIndex]=true;
        resultString+=paraStartIndex+" ";
        tempStack.push(paraStartIndex);
        int tempIndex=paraStartIndex;
        int tempNext;
        Integer tempInteger;
        while (true){
           tempNext=-1;
           for(int i=0;i 

 

 

 

 总结:广度优先用队列,深度优先使用栈,需要注意的是一旦找到与当前顶点连通的顶点后就得break当前循环。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/841224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号