public List<TreeNode> generateTrees(int n) {
		Map<Integer, List<TreeNode>> DP = new HashMap<Integer, List<TreeNode>>();
        if(n == 0) return new ArrayList<TreeNode>();
		generateTreesDP(n, DP);
		return DP.get(n);
    }