回溯 03

作者: 眼若繁星丶 | 来源:发表于2020-09-26 09:48 被阅读0次

回溯 03


LeetCode 113

https://leetcode-cn.com/problems/path-sum-ii/

解题思路

标准的回溯

先dfs遍历下去,直到遇到叶子结点,然后判断一直到叶子结点的这条路径是否符合条件,不符合,则如果左右子树仍然存在,则继续遍历下去,直到树的最底层,(注:这里说的叶子结点比如图中的结点13,虽然它是叶子,但是还没有到树的最底层,依然可以继续往右遍历下去),最底层如果还是没法满足条件,则要回溯,把叶子结点在path路径中移除,寻找下一个可行解。

代码如下

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}
public class Solution {
    public List<List<Integer>> pathSum(TreeNode root, int sum) {
        if (root == null) return new ArrayList<List<Integer>>();
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        List<Integer> path = new ArrayList<Integer>();
        dfs(res, path, root, sum, 0);
        return res;
    }

    public void dfs(List<List<Integer>> res, List<Integer> path, TreeNode root, int sum, int curSum) {
        if (root == null) return;
        curSum += root.val;
        path.add(root.val);
        if (curSum == sum && root.left == null && root.right == null) {
            // 这里必须要添加一个new的对象,不能直接把path添加进去
            // 引用一样,后面变动path就会跟着改变
            res.add(new ArrayList<>(path));
        } else {
            dfs(res, path, root.left, sum, curSum);
            dfs(res, path, root.right, sum, curSum);
        }
        // 递归完之后要回溯,把不符合条件的叶子结点移除path路径,继续寻找下一个可行解
        path.remove(path.size() - 1);
    }
}

相关文章

  • 回溯法与分支限界法

    回溯法与分支限界法 时间 2016-03-24 标签 搜索 回溯法 1、概念 回溯算法实际上一个类似枚举的搜索尝...

  • 回溯 03

    回溯 03 https://leetcode-cn.com/problems/path-sum-ii/[https...

  • 算法(03)回溯

    八皇后问题

  • 剧本回溯练习03

    片名:《魔幻至尊》 类型: 日期:2006年 1.开场画面(第1页)影片故事的第一印象——基调、情绪、影片的类型和...

  • 回溯算法

    回溯算法 回溯算法介绍   回溯算法并不是非常复杂的算法, 很多人接触过但是未必知道这是回溯算法; 典型的回溯算法...

  • 回溯算法:八皇后问题和0-1背包问题

    文章结构 如何理解回溯算法 回溯算法的经典应用 完整源码 图片来源 1. 如何理解回溯算法 1.1 什么是回溯算法...

  • LeetCode之回溯算法

    回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。因为回溯的本质是穷举,穷...

  • N皇后

    回溯法核心代码: n皇后问题回溯法

  • Algorithm进阶计划 -- 回溯算法

    滑动窗口算法回溯算法框架回溯算法运用 1. 回溯算法框架 回溯算法,是类似枚举的搜索尝试过程,主要是在搜索尝试过程...

  • 算法思想 - 回溯算法

    回溯思想 回溯算法的思想非常好理解,之前我们也使用回溯的思想完成了图的深度优先搜索。简单来说,回溯的思想是这样的:...

网友评论

      本文标题:回溯 03

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