剑指offer第34题 二叉树中和为某一值的路径
思路:
在先序遍历的位置处理当前节点,减target的值,当target == 0 && root.left == null && root.right == null时,直接往里面结果集里面装就好了,分别往左边和右边递归就好了
class Solution {
List<List<Integer>> res;
LinkedList<Integer> path;
public List<List<Integer>> pathSum(TreeNode root, int target) {
//为什么我每次看着题解都这么简单,但是自己就是做不出来了?
res = new LinkedList<>();
path = new LinkedList<>();
dfs(root,target);
return res;
}
public void dfs(TreeNode root,int target){
if(root == null){
return;
}
path.add(root.val);
target -= root.val;
if (target == 0 && root.left == null && root.right == null){
res.add(new LinkedList(path));
}
if (root.left != null){
dfs(root.left,target);
}
if(root.right != null){
dfs(root.right,target);
}
path.removeLast();
}
}