用栈实现图的深度优先搜索Java实现
来源:互联网 发布:twitter第三方登录js 编辑:程序博客网 时间:2024/06/07 23:57
《算法导论》一书中给出的深度优搜索是使用递归方式实现的。相比较而言,用递归的方式实现必用非递归方式实现要好理解很多。但是一般而言所有的递归方式实现都可以用非递归方式实现来代替。这里用一个栈结构来代替递归。初始化时将搜索的源节点压入栈中,只要栈不为空,重复以下操作:
(1)弹出栈顶元素结点
(2)将弹出的栈顶结点的所有邻接后续结点中尚未被发现的结点压入栈中。
具体代码实现如下所示
/** * * 用栈实现深度优先搜索 * 不能用递归 * @param start */public void DFS(int start){if(checkVertex(start)){System.out.println("==============DFS============");Stack<Integer> stack = new Stack<>();int[] reached = new int[n+1];stack.push(start);for(int i =0;i<n+1;i++)reached[i] = 0;reached[start] = 1;Reached[start] = 1;//4while(!stack.isEmpty()){int head = stack.pop();System.out.println(head);GraphChain list = aList[head];int node = (int) list.pop();while(!list.isEmpty()){if(reached[node]==0){stack.push(node);reached[node] = 1;Reached[node] = 1;}node = (int) list.pop();}}}else{System.out.println("所选起始点超出范围");}}
此代码是基于前面的图结构的(http://blog.csdn.net/john_bian/article/details/74562477)
阅读全文
0 0
- 用栈实现图的深度优先搜索Java实现
- 广度优先搜索与深度优先搜索的 java 实现
- 用JAVA实现深度优先搜索
- 图的深度、广度优先搜索(JAVA实现)
- java实现图的深度优先搜索算法
- Java用邻接矩阵实现图并进行深度优先搜索
- 深度优先搜索的实现
- 基于图的深度优先搜索和广度优先搜索java实现
- java实现无向图的深度优先搜索和广度优先搜索
- java实现图的深度优先搜索和广度优先搜索
- JAVA实现图的深度优先搜索和广度优先搜索
- Java实现深度优先搜索和广度优先搜索
- 深度优先搜索、广度优先搜索的实现
- 深度优先搜索和广度优先搜索的代码实现
- Java实现图:邻接矩阵表示、深度优先搜索、广度优先搜索、无向图的最小生成树
- Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)
- 图的广度优先搜索(BFS)、深度优先搜索(DFS)(邻接矩阵法和邻接表法java实现)
- DFS深度优先搜索算法与BFS广度优先搜索算法的java实现
- hdu5775 sum
- 如何反射SubscriptionManager和TelephonyManager获取其方法
- 单点登录笔记
- Android调用WebView的JS和JS调用Android的方法
- Oracle学习总结--数据更新和事务控制
- 用栈实现图的深度优先搜索Java实现
- HUD.2544 最短路 (Dijkstra)
- HDU2717 Catch That Cow BFS
- jvm 之 内存溢出场景模拟
- LSTM GRU 得到所有的state 而不是最后一个state
- mysql中having的用法
- COGS 2487 膜法师
- 写文章 JS找两个数组中的相同元素【算法】
- c++ 七月六日课堂记录