输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
DFS遍历
在遍历过程中记录路径上的节点值并将target减去当前节点
当到叶子节点且target为0时 加入答案集合中
注意在递归之后要删掉对应节点 保持递归前后的一致性
class Solution {
List<List<Integer>> results;
List<Integer> result;
public List<List<Integer>> pathSum(TreeNode root, int target) {
results = new ArrayList<>();
result = new ArrayList<>();
recur(root, target);
return results;
}
private void recur(TreeNode node, int target){
if(node == null){
return;
}
target -= node.val;
result.add(node.val);
if(target == 0 && node.left == null && node.right == null){
results.add(new ArrayList(result));
}
recur(node.left, target);
recur(node.right, target);
result.remove(result.size() - 1);
}
}