class Solution {
public:
	int dfs(int left, int right) {
		int sub_Cnt = 0;
		if (left > right)return sub_Cnt;
		for (int i = left; i <= right; ++i) {
			int LeftTree_Cnt = dfs(left, i - 1);
			int RightTree_Cnt = dfs(i + 1, right);
			sub_Cnt += LeftTree_Cnt*RightTree_Cnt;
		}
		return sub_Cnt;
	}
	int numTrees(int n) {
		if (n == 0)return 0;
		return dfs(1,n);
	}
};