老师,您好,这道题我第一反应的解法

来源:7-6 稍复杂的递归逻辑 Path Sum III

Sky_YiBai

2020-07-06

老师,您好,这道是我第一反应的解法,运行结果不正确,但是我看了您的解法后,还是没明白自己的思路错在哪儿了?

public static int pathSum(TreeNode root, int sum) {
	        if (root == null) {
	        	return 0;
	        }
	        
	        
	        int res = 0;
	        if (root.val == sum) {
	        	res+=1;
	        }
	        
	        res += pathSum(root.left, sum - root.val);
	        res += pathSum(root.left, sum);
	        
	        res += pathSum(root.right, sum - root.val);
	        res += pathSum(root.right, sum);
	        
	        return res;
	    }
写回答

3回答

liuyubobobo

2020-07-07

如果我没有理解错,你的:

res += pathSum(root.left, sum);

res += pathSum(root.right, sum);

两句话是想求从 root.left 或者 root.right 起始,看是不是能重新得到题目初始要求的那个 sum。但是在递归过程中,这个 sum 在变,这个 sum 可能不是题目初始要求的那个 sum。


继续加油!:)

3
0

Potter520

2022-07-25

var pathSum = function (root, sum) {

    let paths = [];
    function dfs(root, sum) {
        if (root == null) {
            return 0;
        }

        let res = 0;
        let path = [];
        if (root.val == sum) {
            res += 1;
            path.push(root.val);
            paths.push(path);
        }

        res += dfs(root.left, sum - root.val);
        res += dfs(root.left, sum);

        res += dfs(root.right, sum - root.val);
        res += dfs(root.right, sum);

        return res;
    }

    let ret = dfs(root, sum);
    console.log(paths);

    return ret;
}

https://img.mukewang.com/szimg/62de031209e6cf6a03360216.jpg

运行后都不是想要的结果,结果就是波波老师说额sum一直在变,也就导致得到的结果不是题意要的sum。想不清楚的话,就跟踪你的结果看看就知道了

0
0

手机用户曾小乱

2022-02-08

我一开始也是这个思路,但是没有做出来。你调试出来了没?

0
0

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

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

7408 学习 · 1150 问题

查看课程