LeetCode 96: Unique Binary Search Trees
来源:互联网 发布:网络环境被劫持 编辑:程序博客网 时间:2024/06/05 04:45
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.
解题思路
本题求的是有
思路一:当有
class Solution {public: int numTrees(int n) { // 节点数小于等于1时只能形成一种形状的二叉树 if (n <= 1) return 1; int sum = 0; for (int i = 1; i <= n; i++) { // 枚举二叉树的左右节点数,递归;结果相乘 sum += (numTrees(i-1) * numTrees(n-i)); } return sum; }};
思路二:不难发现上述思路存在许多重复计算的情况,可以使用动态规划进行优化。维护一个数组
代码如下:
class Solution {public: int numTrees(int n) { int dp[n+1]; dp[0] = dp[1] = 1; // 节点数小于等于1时只能形成一种形状的二叉树 // 依次求出结点数为2, ..., n时可以形成的二叉树个数 for (int i = 2; i <= n; i++) { dp[i] = 0; // 枚举二叉树的左右节点数,递归;结果相乘 for (int j = 0; j < i; ++j) { dp[i] += (dp[j] * dp[i-j-1]); } } return dp[n]; }};
0 0
- LeetCode 96 Unique Binary Search Trees II
- [leetcode 96] Unique Binary Search Trees
- Leetcode NO.96 Unique Binary Search Trees
- leetcode || 96、Unique Binary Search Trees
- [Leetcode 96, Medium] Unique Binary Search Trees
- leetcode-96 Unique Binary Search Trees
- Unique Binary Search Trees - LeetCode 96
- Leetcode 96 Unique Binary Search Trees
- Leetcode[96]-Unique Binary Search Trees
- Leetcode 96 Unique Binary Search Trees
- leetcode[96]:Unique Binary Search Trees
- [leetcode 96]Unique Binary Search Trees
- Leetcode # 96 Unique Binary Search Trees
- LeetCode(96) Unique Binary Search Trees
- [leetcode-96]Unique Binary Search Trees(c++)
- leetcode 96: Unique Binary Search Trees
- leetCode #96 Unique Binary Search Trees
- leetcode 95-96:Unique Binary Search Trees
- CentOS 7 下安装 NS2
- jQuery unbind() 方法
- java中 == 和 equals
- 4 Sum -Leetcode
- PHP操作MongoDB数据库
- LeetCode 96: Unique Binary Search Trees
- c++ 虚函数的实现机制
- 013.Division Operator 除法运算
- mysql 授权管理和设置
- iOS瀑布流
- 解决Android SDK Manager无法更新
- 012.Auto Promote 表达式类型自动提升
- Android自定义控件系列三:如何画画
- Vuforia 动态加载DataSet和ImageTarget