博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度优先搜索(DFS)(Java)
阅读量:6598 次
发布时间:2019-06-24

本文共 2066 字,大约阅读时间需要 6 分钟。

1 //1 使用邻接表 时间复杂度: O(n+e) 2 //递归 3 public void DFS(int v) 4 { 5     System.out.print(this.vexs[v].data + " "); 6     this.visited[v] = true; 7          8     for(ArcNode p = this.vexs[v].firstarc; p != null; p = p.nextarc) 9         if(this.visited[p.adjvex] == false)10             this.DFS(p.adjvex);11 }12 13 //迭代(借助栈)14 public void DFS(int v)15 {16     System.out.print(this.vexs[v].data + " ");17     this.visited[v] = true;18     Stack stack = new Stack();19     stack.push(vexs[v]);20     21     for(int i = 0; i < this.vexs.length; i++)22         this.vexs[i].next = this.vexs[i].firstarc;23     24     while(!stack.isEmpty())25     {26         VexNode q = stack.getTop();27         ArcNode p;28         for(p = q.next; p != null && this.visited[p.adjvex] == true; p = p.nextarc);29         if(p != null)30         {31             System.out.print(this.vexs[p.adjvex].data + " ");32             this.visited[p.adjvex] = true;33             stack.push(this.vexs[p.adjvex]);34             q.next = p.nextarc;35         }36         else37             stack.pop();38     }39 }

 

1 //使用邻接矩阵 时间复杂度: O(n^2) 2 //递归 3 public void DFS(int v)   4 { 5     System.out.print(this.vexs[v] + " "); 6     this.visited[v] = true; 7      8     for(int i = 0; i < this.vexnum; i++) 9         if(this.adjacencyMatrix[v][i] == 1 && this.visited[i] == false)10             this.DFS(i);11 }12 13 //迭代(借助栈)14 public void DFS(int v)15 {16     System.out.print(this.vexs[v] + " ");17     this.visited[v] = true;18     Stack stack = new Stack();19     stack.push(v);20     21     while(!stack.isEmpty())22     {23         v = stack.getTop();24         int i;25         for(i = 0; i < this.vexnum; i++)26             if(this.adjacencyMatrix[v][i] == 1 && this.visited[i] == false)27             {28                 System.out.print(this.vexs[i] + " ");29                 this.visited[i] = true;30                 stack.push(i);31                 break;32             }33         if(i == this.vexnum)34             stack.pop();35     }36 }

 

转载于:https://www.cnblogs.com/Huayra/p/10816415.html

你可能感兴趣的文章
ASP.NET Core的配置(3): 将配置绑定为对象[下篇]
查看>>
指静脉识别:一个“销声匿迹”了近二十年的多模态生物识别技术要“重出江湖”...
查看>>
小议阿里云"数加"平台对企业有何帮助?
查看>>
《C语言程序设计进阶教程》一2.3.2 函数实参
查看>>
智能硬件的未来发展:自主研发和AI将成为关键
查看>>
“聚光灯”下的数梦工场 首提“新型互联网”战略
查看>>
IBM预通过R语言扩展 简化Watson系统的应用
查看>>
NVIDIA与阿里云达成战略合作 共同拓展深度学习市场
查看>>
数据中心机房对环境的新要求
查看>>
JSP连接access数据库
查看>>
Loadrunner监控服务器资源
查看>>
Pandas:按条件进行行选择
查看>>
spring boot 自定义规则访问获取内部或者外部静态资源图片
查看>>
Object类
查看>>
Coding打坐
查看>>
springmvc + mybatis + ehcache + redis架构
查看>>
使用rollup打包库的一种基本配置
查看>>
sed指定行范围匹配(转贴!)
查看>>
JS实例(一)百度前端技术学院任务(十三)
查看>>
hdu 5009 Paint Pearls
查看>>