Toasobi
二叉树中和为某个值的路径(中等)
本文最后更新于2023年03月20日,已超过656天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
这道题的主要思路也是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>