TypechoJoeTheme

Toasobi的博客

二叉树中和为某个值的路径(中等)

本文最后更新于2023年03月20日,已超过548天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

这道题的主要思路也是dfs,每次往下搜一次,目标数字要减去当前节点的val值。

我们使用了一个list叫path来存储每一次搜索下去时经过的节点的val值。如果左右边都走过了还是不满足条件,则会将path中的值移除一个(回溯)

注意res.add(new LinkedList(path)),这个比较关键,不能res.add(path),因为这样后面的path改变后list中的path也会更改。

下面来看看代码:

<div>class Solution {
    LinkedList<List<Integer>> res = new LinkedList<>();
    LinkedList<Integer> path = new LinkedList<>(); 
    public List<List<Integer>> pathSum(TreeNode root, int sum) {
        recur(root, sum);
        return res;
    }
    void recur(TreeNode root, int tar) {
        if(root == null) return;
        path.add(root.val);
        tar -= root.val;
        if(tar == 0 && root.left == null && root.right == null)
            res.add(new LinkedList(path));
        recur(root.left, tar);
        recur(root.right, tar);
        path.removeLast();
    }
}</div>
朗读
赞(0)
评论 (0)