题目:
Given n, how many structurally unique BST's (binary search trees) that store values 1...n?
For example,
Given n = 3, there are a total of 5 unique BST's.
1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3
#include <iostream>
#include <vector>
using namespace std;
/*
Given n, how many structurally unique BST's (binary search trees) that store values 1...n?
For example,
Given n = 3, there are a total of 5 unique BST's.
*/
/*
查找一个序列中搜索二叉树的种类 其实对于一个序列来说 任何一个值都可以成为二叉树的
根节点 依据这一特性可以判断出一个二叉树的种类数目
那么依据任何一个节点为根 等于左子树种类乘以右子树的种类
*/
int NumofBinaryTree(int n)
{
vector<int> vec(n+1,0);
vec[0]=1;
vec[1] =1;
if(n<0)
return 0;
int i,k;
for(i=2;i<vec.size();i++)
{
for(k=0;k<i;k++)
vec[i] += vec[k]*vec[i-k-1];
}
return vec[n];
}
int main()
{
cout<<NumofBinaryTree(3);
return 0;
}