题意:
记录二叉树从根节点到叶子结点的所有结点的值为给定数的所有路径。
分析:
递归深搜即可。
但是要注意叶子节点就不要进如递归了,因为叶子节点有两个空子节点,进入递归判断,会出现错误答案。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
List<Integer> l = null;
List<List<Integer>> list = null;
int sum;
public List<List<Integer>> pathSum(TreeNode root, int sum) {
this.sum = sum;
list = new ArrayList<>();
l = new ArrayList<>();
if(root==null)
return list;
helper(root, 0);
return list;
}
private void helper(TreeNode root, int t){
if(root == null){
if(t == sum)
list.add(new ArrayList<>(l));
return;
}
t += root.val;
l.add(root.val);
if(root.left==null && root.right==null && t==sum){
list.add(new ArrayList<>(l));
}else{
if(root.left != null)
helper(root.left, t);
if(root.right!=null)
helper(root.right, t);
}
l.remove(l.size()-1);
}
}