113. Path Sum II

class Solution {
    public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
        List<List<Integer>> result = new LinkedList<>();
        dfs(root, targetSum, new LinkedList<Integer>(), result);
        return result;
    }
    
    private void dfs(TreeNode node, int sum, List<Integer> path, List<List<Integer>> res){
        if (node == null) return;
        path.add(node.val);
        if (node.left == null && node.right == null && sum == node.val){
            // ctor: new LinkedList<>(Collection);
            res.add(new LinkedList<Integer>(path));
        }
        
        dfs(node.left, sum-node.val, path, res);
        dfs(node.right, sum-node.val, path, res);
        // method: list.remove(int index);
        path.remove(path.size()-1);
    }
}

Last updated