class Solution {
public int numTrees(int n) {
int[] G = new int[n + 1];
G[0] = 1;
G[1] = 1;
for(int i = 2; i <= n; i++){//总共n+1个元素
for(int j = 1; j <= i; j++){//j为root,i这里相当于n,G[2], G[3]...才能一直求到G[n]
G[i] += G[j - 1] * G[i - j];//i = j的情况为右边是空子树,只看数量,数量相同,组合种类就相同
}
}
return G[n];
}
}