leetcode 刷题之路 49 Unique Binary Search Trees
2014-08-07 19:35
274 查看
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.
Given 题目要求求数字1~n构成的二叉查找树共有多少种。
采用动态规划求解。使用dp数组保存中间计算结果,dp[i]表示1~i个数字构造的二叉查找树个数,dp[0],dp[1]为1,对于任意的数字0,1,2...i,可以这样构造一个查找二叉树,以数字j为根节点,数字1~j-1构造其左子树,数字j+1~i构造其右子树,j的取值为1~i,对于每个j,构造的查找二叉树可能有dp[i-j-1]*dp[j]种,所有j对应的二叉树种类数加起来就是dp[i]的值,可以看出,这是一个递归求解的问题,要求的n=i时的结果,必须知道n=0.......n-1时的结果,故可以采用递归求解,但是直接使用递归求解时间复杂度会呈指数增长,这里采用动态规划的方法,保存每次的计算结果,避免了大量运算,时间复杂度为O(n^2)。
AC code:
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
Given 题目要求求数字1~n构成的二叉查找树共有多少种。
采用动态规划求解。使用dp数组保存中间计算结果,dp[i]表示1~i个数字构造的二叉查找树个数,dp[0],dp[1]为1,对于任意的数字0,1,2...i,可以这样构造一个查找二叉树,以数字j为根节点,数字1~j-1构造其左子树,数字j+1~i构造其右子树,j的取值为1~i,对于每个j,构造的查找二叉树可能有dp[i-j-1]*dp[j]种,所有j对应的二叉树种类数加起来就是dp[i]的值,可以看出,这是一个递归求解的问题,要求的n=i时的结果,必须知道n=0.......n-1时的结果,故可以采用递归求解,但是直接使用递归求解时间复杂度会呈指数增长,这里采用动态规划的方法,保存每次的计算结果,避免了大量运算,时间复杂度为O(n^2)。
AC code:
class Solution { public: int numTrees(int n) { int *dp=new int[n+1]; memset(dp,0,(n+1)*sizeof(int)); dp[0]=dp[1]=1; for(int i=2;i<=n;i++) { for(int j=0;j<=i-1;j++) { dp[i]=dp[i]+dp[j]*dp[i-1-j]; } } int ret=dp ; delete []dp; return ret; } };
相关文章推荐
- leetcode 刷题之路 50 Unique Binary Search Trees II
- LeetCode-Unique Binary Search Trees
- leetcode - Unique Binary Search Trees
- 【Leetcode】Unique Binary Search Trees
- leetcode question 95: Unique Binary Search Trees II
- 【LeetCode】95. Unique Binary Search Trees II
- [Leetcode] Unique Binary Search Trees
- leetcode: Unique Binary Search Trees II
- 【Leetcode】:Unique Binary Search Trees
- LeetCode-Unique Binary Search Trees II
- LeetCode-Unique Binary Search Trees II-唯一二叉搜索树-递归
- 【LeetCode】Unique Binary Search Trees
- leetCode 95.Unique Binary Search Trees II (唯一二叉搜索树) 解题思路和方法
- LeetCode:Unique Binary Search Trees
- Leetcode:unique_binary_search_trees
- LeetCode Online Judge 题目C# 练习 - Unique Binary Search Trees
- LeetCode_DP_Unique Binary Search Trees II
- leetcode: Unique Binary Search Trees
- leetcode[95]Unique Binary Search Trees II
- leetcode第一刷_Unique Binary Search Trees II