老师,问一下113路径总和和129根节点到叶节点数字之和这两个题,基本都是一样的模式,为什么113的list需要回溯而129的count值不需要回溯呢,是因为int类型和list类型的区别嘛
113
List<List<Integer>> res = new ArrayList<>();
public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
if (root==null){
return res;
}
dfs(root,targetSum,new ArrayList<>());
return res;
}
public void dfs(TreeNode root, int targetSum,List<Integer> list){
if (root==null){
return;
}
list.add(root.val);
if (root.val==targetSum&&root.left==null&&root.right==null){
res.add(new ArrayList<>(list));
list.remove(list.size()-1);
return;
}
if (root.left!=null){
dfs(root.left,targetSum-root.val,list);
}
if (root.right!=null){
dfs(root.right,targetSum-root.val,list);
}
list.remove(list.size()-1);
return;
}
}
129
class Solution {
int sum = 0;
public int sumNumbers(TreeNode root) {
if (root==null){
return 0;
}
dfs(root,0);
return sum;
}
public void dfs(TreeNode root,int count){
if (root==null){
return;
}
count=count *10 + root.val;
if (root.left==null&&root.right==null){
sum+=count;
return;
}
dfs(root.left,count);
dfs(root.right,count);
return;
}
}