LeetCode
来源:互联网 发布:员工监控软件 编辑:程序博客网 时间:2024/06/15 16:05
解题代码:
classSolution {
public:
int numTrees(int n) {
if(n<=0)
return 0;
if(n==1)
return 1;
vector<int> res(n+1,0);
res[1]=1;
int i=2;
while(i<=n){
res[i]+=res[i-1]*2;
for(int j=i-2;j>0;j--){
res[i]+=res[j]*res[i-j-1];
}
i++;
}
return res[n];
}
};
解题思路:
题目要求找出由1到n共n个数组成的不同的二叉查找树的个数。设为f(n),同时,f(n)也可以理解为n个不同的数能组成不同的二叉查找树的个数。显然f(1)=1。对于n大于1的情况,我们可以考虑到,对于1<=i<=n,若i作为根节点,共有i-1个数在i的左边,它们的排列方式的可能性共有f(i-1),而有n-i个数在i的右边,它们的排列方式的可能性共有f(n-i)。因此,对于每个i作为根节点,都有f(i-1)* f(n-i)种排列方式(其中,为方便计算,设f(0)=1)。所以有:
f(n)=f(n-1)*f(0)+f(n-2)*f(1)+……+f(i-1)*f(n-i)+……+f(0)*f(n-1)
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- GDB十分钟教程
- js模拟网页的回退回退
- C/C++经典程序训练3---模拟计算器
- C++第3次实验(基础班)—选择结构程序设计(参考答案)-项目2:本月有几天
- python使用 C语言类型、ctypes 的用法
- LeetCode
- iBET Online Casino─ MG Platform Information(Casino Platform Info, iBET, iBET MG, iBET Online Casino,
- 关于字符串的比较
- Visual Studio各版本工程文件之间对应关系
- ScrollView嵌套ListView设置默认位置为最顶部的解决方案
- java的算术右移(>>)、算术左移(<<)及逻辑右移(>>>,无符号移位)
- 网上图书商城视频教程day02
- TCP服务器端口数,最大连接数以及MaxUserPort的关系辨真
- vs工程配置优美的背景图片