import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @param sum int整型 * @return int整型ArrayList<ArrayList<>> */ ArrayList<ArrayList<Integer>> res; public ArrayList<ArrayList<Integer>> pathSum (TreeNode root, int sum) { // write code here res = new ArrayList<ArrayList<Integer>>(); if(root == null){ return res; } dfs(root,new ArrayList<Integer>(),sum,0); return res; } void dfs(TreeNode root, ArrayList<Integer> set, int sum,int nowsum){ set.add(root.val); nowsum += root.val; if(root.left == null && root.right == null){ if(nowsum == sum) res.add(new ArrayList<>(set)); return; } if(root.left != null){ dfs(root.left, set, sum, nowsum); set.remove(set.size()-1); } if (root.right != null){ dfs(root.right, set, sum, nowsum); set.remove(set.size()-1); } } }