波波老师,您可以看看我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);
    }


0
0

liuyubobobo

2020-03-22

res 进了函数就是这个函数的局部变量,和外面的 res 已经不是一回事儿了。


你的思路,应该把 res 设计成整个类的成员变量。


继续加油!:)

0
7
liuyubobobo
回复
v不离不弃v
在Java中,除了基本数据类型,全部是传引,非常好记。加油!:)
2020-03-22
共7条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7433 学习 · 1159 问题

查看课程