LeetCode OJ:Unique Binary Search Trees
2014-01-22 22:46
288 查看
Unique Binary Search Trees
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
算法思想:
1、dp问题,dp[i]表示1到iBST个数,则有
对于新加入一个元素的个数其实也就是将1到i依次作为根节点,比如对于1节点,个数也就是1左边的个数假设为dp[0]乘以1右边的个数dp[i-1]。
class Solution { public: int numTrees(int n) { vector<int> dp; dp.assign(n+1,0); dp[0]=1; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) dp[i]+=dp[j-1]*dp[i-j]; return dp ; } };
2、递归
class Solution { public: int numTrees(int n) { if(n==0)return 1; int sum=0; for(int i=1;i<=n;i++) sum+=numTrees(i-1)*numTrees(n-i); return sum; } };
3、根据dp[i]与dp[i-1]之间的关系,也可以把它理解成找规律,很直接
class Solution { public: int numTrees(int n) { int dp = 1; for (int i = 2; i <= n; i++) dp = 2*(2*i-1)*dp/(i+1); return dp; } };
相关文章推荐
- LeetCode OJ 95. Unique Binary Search Trees II
- LeetCode OJ 之 Unique Binary Search Trees II (不同的二叉搜索树 - 二)
- 【LeetCode OJ】Unique Binary Search Trees
- LeetCode OJ:Unique Binary Search Trees II
- LeetCode OJ:Unique Binary Search Trees(唯一二叉搜索树)
- LeetCode OJ :Unique Binary Search Trees II(唯一二叉搜索树)
- LeetCode OJ——Unique Binary Search Trees II
- [LeetCode OJ]Unique Binary Search Trees
- LeetCode OJ - Unique Binary Search Trees II
- LeetCode OJ——Unique Binary Search Trees
- Leetcode_num6_Unique Binary Search Trees
- LeetCode | Unique Binary Search Trees
- 96. Unique Binary Search Trees
- leetcode_096 Unique Binary Search Trees
- [Leetcode 96, Medium] Unique Binary Search Trees
- leetcode_095 Unique Binary Search Trees II
- DP Unique Binary Search Trees
- Unique Binary Search Trees II
- LeetCode 95. Unique Binary Search Trees II(唯一二叉搜索树)
- LeetCode题解——Unique Binary Search Trees