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