class Solution {
public List<List<Integer>> pathSum(TreeNode root, int sum) {
List<List<Integer>> res = new ArrayList<>();
if(root == null) return res;
List<Integer> list = new ArrayList<>();
helper(res, list, root, sum);
return res;
}
public void helper(List<List<Integer>> res, List<Integer> list, TreeNode root, int sum){
list.add(root.val);
if(root.left == null && root.right == null){
if(root.val == sum)
res.add(new ArrayList<>(list));
}
if(root.left != null)
helper(res, list, root.left, sum-root.val);
if(root.right != null)
helper(res, list, root.right, sum-root.val);
list.remove(list.size()-1);
}
}
我正在处理 Leetcode 113. 路径总和 II。这并不是关于问题本身,我想知道为什么在第13行不直接写res.add(list);
而是写res.add(new ArrayList<>(list));
。