96. 不同的二叉搜索树

class Solution {
public:
int numTrees(int n) {
int dp[30]={0};
//由i个结点组成的二叉搜索树有多少种
dp[0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<i;j++)
//j表示根节点左子树有j个结点
dp[i]+=dp[j]*dp[i-j-1];
//对根节点左右子树结点数量遍历
//数量有左子树的数量*右子树的数量即可,累加和
//左子树为0时也有数值所以dp[0]为1
return dp[n];
}
};











![[数据结构]红黑树之插入操作(RBTree)](https://i-blog.csdnimg.cn/direct/b11eb3a1c87f4090ba5e7e6d1af3941a.png)







