void subsets(TreeNode node, List<Integer> list, int cursum, int sum) {
		List<Integer> listN = new ArrayList<Integer>(list);
		listN.add(node.val);
		cursum += node.val;
		if (node.left == null && node.right == null) {
			if (cursum == sum) {
				List<Integer> newList = new ArrayList<Integer>(listN);
				result.add(newList);
			}
			return;
		} else {
			if (node.left != null)
				subsets(node.left, listN, cursum, sum);
			if (node.right != null)
				subsets(node.right, listN, cursum, sum);
		}
	}