Question:
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
二叉搜索树的个数
Algorithm:
BST(二叉搜索树):
1、左子树上的所有结点的值均小于它的根结点的值
2、右子树上的所有结点的值均大于它的根结点的值
3、任意结点的左右子树也分别为二叉搜索树
4、没有键值相等的结点
解法:先取一个点作为顶点,然后左边依次可以取0~N-1相对应的,右边是N-1~0个,两两配对相乘。
h(0)=1;h(1)=1
h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)*h(0) (n>=2)
Accepted Code:
class Solution { //卡特兰数 public: int numTrees(int n) { vector<int> res(n+1,0); res[0]=1; res[1]=1; for(int i=2;i<n+1;i++) { for(int j=0;j<i;j++) { res[i]+=res[j]*res[i-j-1]; } } return res[n]; } };
时间: 2024-12-21 03:10:23