美文网首页
简单的谈谈dfs

简单的谈谈dfs

作者: 哲哲哥 | 来源:发表于2017-11-01 20:51 被阅读0次

简单的说回溯法,递归就是将函数负责几遍。那么回溯法就是将for循环复制几遍。
回溯法框架

public class Solution {
    public static List<List<Integer>> ans=new LinkedList<List<Integer>>();//存储最后的结果集合
    public static boolean[] v=new boolean[100];//用来标记某个元素是否被使用过了
    public static LinkedList<Integer> list=new LinkedList<Integer>();//用来存储每一层递归的结果
    public static void robot(int index,int[] nums){
        if () {//递归出口
            System.out.println(list);
            List<Integer> list2=new LinkedList<Integer>();
            for (Integer i : list) {
                list2.add(i);
            }
            ans.add(list2);//不能存list到最后会被清空
            return;
        }
        for(){
        //一般都有list.add(xxx)
        //一般都有list.pollLast();
        }
    }

}

为什么要把list的最后一层给pop出来呢?因为集合和数组一样都是传的指针,就对下一个函数传指针调用,所以即使被调用的函数消失也会影响集合里面的值。所有当我们回到递归的上一层时,我们是想回到调用函数的那个状态,所有我们需要把影响的值给去掉。

我们现在在看看有返回值的递归:

public int TreeDepth(TreeNode root, int sum) {
        if (root == null) {
            return sum; //这里返回的值的意义要和其他的返回值的意义样
        }
        int left = TreeDepth(root.left, sum + 1);
        int right = TreeDepth(root.right, sum + 1);
        int deepth = Math.max(left, right);
        return deepth; // //这里返回的值的意义要和其他的返回值的意义样

    }

对于有一些题目可以从“要么取,要么不取”只有两种状态的,我们可以参考二叉树的三种遍历来思考。
对对于一些题目是有多种状态可以看出多给个for循环的嵌套。比如:8皇后可以看出是8个for循环的嵌套来解决。对于n皇后则可以看成是n个for循环所以要使用dfs,因为n是一个变量

相关文章

  • 简单的谈谈dfs

    简单的说回溯法,递归就是将函数负责几遍。那么回溯法就是将for循环复制几遍。回溯法框架 为什么要把list的最后一...

  • 百度之星

    01 题 简单dfs

  • DFS简单理解

    DFS(深度优先搜索) DFS是一种搜索算法,在我的理解中,它是通过一种类似树状的结构来进行搜索的,运用递归算法。...

  • 穷竭搜索

    DFS POJ 1979: Red and Black简单的DFS找四联通块即可。代码如下 POJ 3009: C...

  • 404. Sum of Left Leaves

    题目和思路 简单的递归 代码 my dfs 非递归

  • 简单的搜索 ----(dfs) 和 (bfs)简单的

    广搜(bfs)和 深搜(dfs) 先从广搜说起(bfs)广搜,字面感觉就是广面的搜索,其实就是这样的,我认为可以把...

  • @张坚 @Judy@DFS @几米 @司令 个人有个很有趣的小建议, 简单概括为:参众两院产生名单由dfs持有者投...

  • 2019-08-22 剑指 二叉树中和为某一值的路径

    很简单的DFS,但是不知道为何sum嵌套函数找不到变量?

  • DFS与BFS的简单应用

    1.统计叶子节点总数 参考前 中 后序或者层序遍历,用任意一种方法实现. 思路: 设置一个全局变量,每访问一个非空...

  • poj1321(简单的dfs)

    (最近在做kuangbin带你飞专题)问题链接:棋盘问题这是一道入门dfs的题目,以为n的比较小,所以完全可以用d...

网友评论

      本文标题:简单的谈谈dfs

      本文链接:https://www.haomeiwen.com/subject/zcfnpxtx.html