- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
public class Solution {
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) {
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
dfs(list, ret, root, target);
return ret;
}
public void dfs(ArrayList<Integer> list, ArrayList<ArrayList<Integer>> ret,
TreeNode root, int target) {
if(root == null) return;
list.add(root.val);
if (target == root.val && list.size() != 0 && root.left == null && root.right == null){
ret.add((ArrayList<Integer>) list.clone());
}
target -= root.val;
dfs(list, ret, root.left, target);
dfs(list, ret, root.right, target);
target += root.val;
list.remove(list.size() - 1);
}
}