波波老师,您可以看看我leetcode129题的问题么
来源:7-6 稍复杂的递归逻辑 Path Sum III

v不离不弃v
2020-03-22
波波老师,leetcode129题,我传入的计算总数的res传入0之后,为啥最后输出总是0呢?我很费解,不知道哪里出了问题,您可以帮我看看么?谢谢老师
class Solution {
public int sumNumbers(TreeNode root) {
if(root == null)
return 0;
int res = 0;//这里是计算sum的变量
dfs(root, res, 0);//dfs(root,计算sum,每个节点值*10后加上val)
return res;//这里return后好像还是初始化的0的值,我不知道哪里有问题
}
private void dfs(TreeNode node, int res, int targetNum){
if(node == null)
return ;
targetNum = targetNum *10 + node.val;
if(node.left == null && node.right == null)
res += targetNum;
dfs(node.left, res, targetNum);
dfs(node.right, res, targetNum);
}
}
写回答
2回答
-
v不离不弃v
提问者
2020-03-22
下面回答中的leetcode113题代码,利用回溯的思想。
public List<List<Integer>> pathSum(TreeNode root, int sum) { List<List<Integer>> res = new ArrayList<>(); ArrayList<Integer> res1 = new ArrayList<>(); if(root == null) return res; dfs(root, sum, res, res1); return res; } private void dfs(TreeNode node, int sum, List<List<Integer>> res, ArrayList<Integer> res1){ if(node == null) return ; res1.add(node.val); if(node.left == null && node.right == null && sum - node.val == 0) res.add(new ArrayList(res1)); dfs(node.left, sum - node.val, res, res1); dfs(node.right, sum - node.val, res, res1); res1.remove(res1.size() - 1); }
00 -
liuyubobobo
2020-03-22
res 进了函数就是这个函数的局部变量,和外面的 res 已经不是一回事儿了。
你的思路,应该把 res 设计成整个类的成员变量。
继续加油!:)
072020-03-22