二叉搜索树
二叉搜索树是一个有序树。
- 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
- 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
-
思路
仿佛是在找规律的一道题….看解析
随想录解析为什么是乘法?
分类计数和分步计数
```javascript var numTrees = function(n) { let dp =new Array(n+1).fill(0) dp[0] =1for(let i=1;i<=n;i++){
for(let j=1;j<=i;j++){
dp[i] +=dp[j-1]*dp[i-j]
}
} return dp[n]
};
- 时间复杂度:$O(n^2)$
- 空间复杂度:$O(n)$
<a name="nO3kw"></a>
# 卡特兰数
上文推导出来的递推公式在数学上称为卡特兰数<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/2450083/1649644208495-e8ef980f-1a6c-4e3d-9574-7e6ae2233341.png#clientId=u194aee7c-b49d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=167&id=u073c6f2e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=209&originWidth=717&originalType=binary&ratio=1&rotation=0&showTitle=false&size=18153&status=done&style=none&taskId=u5777ce1a-3bbf-4753-88ce-725469369b2&title=&width=573.6)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/2450083/1649644235232-8597ce41-88a6-4e62-aca3-caea976427ba.png#clientId=u194aee7c-b49d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=137&id=udf31e43f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=171&originWidth=989&originalType=binary&ratio=1&rotation=0&showTitle=false&size=17926&status=done&style=none&taskId=u5884550d-3eb9-43f8-9a89-340ecafdc73&title=&width=791.2)
```javascript
var numTrees = function(n) {
let C = 1;
for (let i = 0; i < n; ++i) {
C = C * 2 * (2 * i + 1) / (i + 2);
}
return C;
};
时间复杂度 : O(n)
空间复杂度 : O(1)