class Solution { List> result = new LinkedList>(); public List> pathSum(TreeNode root, int sum) { if(root==null) { return result; } List list = new LinkedList(); find(list,root,0,sum); return result; } public void find(List list,TreeNode root,int target,int sum) { if(root==null) { return; } target+=root.val; list.add(root.val); if(target==sum&&root.left==null&&root.right==null) { result.add(new LinkedList<>(list)); } else { find(list,root.left,target,sum); find(list,root.right,target,sum); } list.remove(list.size()-1); } }