dfs

public void dfs(TreeNode root, int sum, ArrayList<Integer> list, ArrayList<ArrayList<Integer> result){
  // 若当前节点为空节点,返回
  if(root == null){
    return;
  }
  // 将当前节点的值存放到list中
  ArrayList<Integer> sublist = new ArrayList<>(list);
  sublist.add(root.val);
  //若当前节点没有子节点, 判断加上当前节点的值是否等于期望的sum
  if(root.left == null && root.right == null){
    if(root.val == sum){
    	result.add(sublist);
    	return;
  	}
  }else{
    //若当前节点存在子节点,则dfs;
    dfs(root.left, sum - root.val, sublist, result);
    dfs(root.right, sum - root.val, sublist, result);
  }
}