• 使用DFS求任意两点的所有路径


    先上代码:

       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<>();
    

      

      

  • 相关阅读:
    iOS身份证号码识别
    GPS定位开发
    Xcode8注释有时会失效的解决方法
    本地缓存FMDB的使用(iOS)
    iOS蓝牙开发
    极光推送
    查找当前数据库服务器中某张表存在于哪个数据库中
    redis安装配置记录
    python 之生成器
    python之迭代
  • 原文地址:https://www.cnblogs.com/lz3018/p/5363570.html
Copyright © 2020-2023  润新知