这道题目10分钟就可以完成了,最近在练习中有收获啊,加油
路径总和,分成左右两个子树进行,要注意的是Java这里需要把路径进行额外保存,否则直接存path都是null
class Solution {
private List> ret = new ArrayList<>();
public List> pathSum(TreeNode root, int targetSum) {
if(root == null) return ret;
List path = new ArrayList<>();
searchPath(root, targetSum, path);
return ret;
}
private void searchPath(TreeNode root, int targetSum, List path){
if(root == null) return;
if(root.left == null && root.right == null){
if(root.val == targetSum){
List ans = new ArrayList<>();
for(int i = 0; i < path.size(); i++){
ans.add(path.get(i));
}
ans.add(root.val);
ret.add(ans);
}
}
path.add(root.val);
searchPath(root.left, targetSum-root.val, path);
searchPath(root.right, targetSum-root.val, path);
path.remove(path.size()-1);
}
}



