import java.util.*; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { private ArrayList<ArrayList<Integer>> res = new ArrayList<>(); public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int expectNumber) { if (root == null) { return res; } dfs(root, expectNumber, new ArrayList<>()); return res; } private void dfs(TreeNode root, int target, List<Integer> list) { if (root == null) { return; } target -= root.val; list.add(root.val); if (root.left == null && root.right == null && target == 0) { res.add(new ArrayList<>(list)); } dfs(root.left, target, list); dfs(root.right, target, list); list.remove(list.size() - 1); } }