public ArrayList<TreeNode> getTree(int start, int end) {
		ArrayList<TreeNode> subTree = new ArrayList<TreeNode>();
		if (start > end) {
			subTree.add(null);
			return subTree;
		}
		for (int i = start; i <= end; i++) {
			System.out.println("left start: " + start + " end: " + (i - 1));
			ArrayList<TreeNode> left = getTree(start, i - 1);
			System.out.println("right start: " + (i + 1) + " end: " + end);
			ArrayList<TreeNode> right = getTree(i + 1, end);
			for (int j = 0; j < left.size(); j++) {
				for (int k = 0; k < right.size(); k++) {
					TreeNode node = new TreeNode(i);
					node.left = left.get(j);
					node.right = right.get(k);
					subTree.add(node);
				}
			}
		}
		return subTree;
	}