题目描述:
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。
注意是叶子节点!
思路:
错误内容:
1)k > target的情况 写成return,出错
2)不写,是正确的
代码:注意,如果 k > target 返回,会出错!考虑原因!
会出现链表之前存的内容没有清除;
回溯是一层一层回,类似DFS,从底往上执行
只判断 相等的情况就行,其他情况就继续,一直到底就返回!
class Solution {
//双向队列
LinkedList<List<Integer>> res = new LinkedList<>();//记录结果
LinkedList<Integer> list = new LinkedList<>();
public List<List<Integer>> pathSum(TreeNode root, int target) {
dfs(root,target,0);
return res;
}
void dfs(TreeNode node,int target,int k){
if(node == null) return;
k = node.val + k;
//第一个节点,需要创建一个链表
list.add(node.val);
if(k == target && node.left == null && node.right == null){
res.add(new LinkedList(list));
}
//只要大于,就不会添加,不需要考虑该情况
//else if(k > target){
// return;
//}
dfs(node.left,target,k);
dfs(node.right,target,k);
list.removeLast();
}
}