首页 > 其他 > 详细

DFS

时间:2020-12-28 12:30:15      阅读:22      评论:0      收藏:0      [点我收藏+]

DFS: 深度优先查找。

模板1

DFS通过递归深度查找。

 

boolean dfs(Node cur, Node target, Set<Node> visited) {

       if(cur == target){

              return ture;

       }

  

   for(Node next : cur’s neighbors ) {

              visited.add(next);

              return dfs(next, target, visisted);

             

}

}

 

模板2

模板1的实现简单,但是存在一个缺点,如果递归深度太深,会出现栈溢出。可以使用显示栈实现DFS

 

boolean dfs(Node root, Node target) {

       ArrayDeque<Node> stack = new ArrayDeque<>();

       Set<Node> visisted;

       stack.add(root);

      

       while(!stack.isEmpty()) {

              Node cur = stack.pop();

              If(cur == target) {

                     return true;

    }

       for(Node next : cur’s neighbors){

         If(!visited.contains(next) {

                 stack.add(next);

                 visisted.add(next);

           }

      }

  } 

}

DFS

原文:https://www.cnblogs.com/billyqiu/p/14200717.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!