您的位置:首页 > 产品设计 > UI/UE

【leetcode】unique-binary-search-trees

2014-08-24 10:24 351 查看
//2014年8月24日10:09:19
//2014年8月24日10:23:27
//公式,迭代,效率不高
//f(n) = 2f(n-1)+2f(1)f(n-2)+2f(2)f(n-3)+...+2f((n-1)/2-1)f((n-1)/2+1)+f((n-1)/2)f((n-1)/2) n为奇数
//f(n) = 2f(n-1)+2f(1)f(n-2)+2f(2)f(n-3)+...+2f(n/2)f(n/2) n为偶数
#include <iostream>

using namespace std;
class Solution {
public:
int numTrees(int n) {
if(n==1 || n==2){
return n;
}
if(n == 0){
return 1;
}
int result = 0;
if(n%2 == 1){
result += numTrees((n-1)/2)*numTrees((n-1)/2);
for(int i=(n-1)/2+1 ; i<=n-2 ; i++){
result += 2*numTrees(i)*numTrees(n-1-i);
}
result += 2*numTrees(n-1);

}
else{
for(int i=n/2 ; i<=n-2 ; i++){
result += 2*numTrees(i)*numTrees(n-1-i);
}
result += 2*numTrees(n-1);
}
return result;
}
};
int main()
{
Solution A;
cout << A.numTrees(3) << endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: