使用DFS求任意两点的所有路径
2016-04-07 14:51
399 查看
先上代码:
1)reachMap的key是图中一个节点的id,而对应的value是列表形式,存储了这个节点可以直接到达的所有节点。其实,reachMap就是图的邻接表存储形式。
2)搜索得到的一条路径存储在connectionPath中,使用Stack实现:
3)所有的路径存储在connectionPaths中,是以Stack为元素的列表:
public static void findAllPaths(Integer nodeId,Integer targetNodeId, Map<Integer,ArrayList<Integer>> reachMap) { for (Integer nextNode : reachMap.get(nodeId)) { if (nextNode.equals(targetNodeId)) { Stack temp = new Stack(); for (Integer node1 : connectionPath) { temp.add(node1); } temp.push(demandRouterArray[1]); temp.add(0, demandRouterArray[0]); connectionPaths.add(temp); } else if (!connectionPath.contains(nextNode)) { connectionPath.push(nextNode); findAllPaths(nextNode, targetNodeId,reachMap); connectionPath.pop(); } } }
1)reachMap的key是图中一个节点的id,而对应的value是列表形式,存储了这个节点可以直接到达的所有节点。其实,reachMap就是图的邻接表存储形式。
2)搜索得到的一条路径存储在connectionPath中,使用Stack实现:
static Stack<Integer> connectionPath=new Stack();
3)所有的路径存储在connectionPaths中,是以Stack为元素的列表:
static List<Stack> connectionPaths=new ArrayList<>();
相关文章推荐
- spring通过三种方式将value注入到bean的property中
- Python通用序列操作
- Java对流的使用(三)
- factory | factory methods | static factory methods
- 沫沫金:PS快速扣头发丝【详细教程】
- Subversion 手册
- Android屏幕的适配
- 素数距离问题
- 6.2.5 QMGR_QUEUE:收信域信息
- sqlserver2008 收缩日志秘籍
- Scala之集合Collection
- React Native 安卓真机测试报错 java.util.concurrent.ExecutionException:java.lang.RuntimeException:referenceError: can't find variable:_fbBatchedBridge(<unknown file>:1)
- 动作特效
- ubuntu--添加新硬盘
- C++面向对象编程分享07----20160407_李楚煌
- 前端学习笔记03,CSS
- struts2 注解 同时 使用 *_*_*_*等
- Android Studio布局渲染
- PHP中的魔术方法和魔术常量简介和使用
- C++实现——大数阶乘