【LeetCode-中等题】113. 路径总和 II

文章目录

    • 题目
    • 方法一:DFS+回溯

题目

方法一:DFS+回溯

解题核心 就是要知道递归在哪里结束 ,收货结果在哪里收获,哪些变量需要回溯,哪些不需要回溯

【LeetCode-中等题】113. 路径总和 II_第1张图片

class Solution {
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> path = new ArrayList<>();
    int targetSum = 0;
    public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
        this.targetSum = targetSum;
        dfs(root,0);
        return res;
    }
    public void dfs(TreeNode root , int sum){
            if(root==null) return;
            path.add(root.val);
            sum = sum+root.val;
            if(root.left == null && root.right == null) {
                if(sum == targetSum)
                res.add(new ArrayList<>(path));
            }
            dfs(root.left, sum);
            dfs(root.right, sum);
            path.remove(path.size() - 1);
    }
}

你可能感兴趣的:(力扣,#,中等题,leetcode,深度优先,算法)