新博文地址:[leetcode]Unique Binary Search Trees
http://oj.leetcode.com/problems/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
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
刚拿到这道题,直觉是树,但是看了之后发现完全与树关系不大,是个很典型的DP问题:
比如说有1~n,n个节点,我们选择一个中间节点k为根节点,那么左子树就变成了子问题 1 ~ (k-1)有几种构造法,右子树就变成了(k + 1) ~ n有几种构造法,左子树跟右子树的组合数,就是n个节点的构造数;
即f(n) = sum{ f(k - 1) * f( n - k) | k = 1 ~ n }
容易知道f(0) = f(1) = 1; f(2) = 2;
接下来的编程就容易了:
public int numTrees(int n) { if(n <= 1){ return 1; } int[] num = new int[n + 1]; num[0] = 1; num[1] = 1; num[2] = 2; for(int i = 3; i <= n; i++){ for(int j = 1; j <= i; j++){ num[i] += num[j - 1] * num[i - j]; } } return num[n]; }
虽然AC,但是 时间复杂度略高,不知道有没有O(n)的解法
相关推荐
python python_leetcode题解之096_Unique_Binary_Search_Trees
python python_leetcode题解之095_Unique_Binary_Search_Trees_II
c语言基础 c语言_leetcode题解之0096_unique_binary_search_trees.zip
javascript js_leetcode题解之96-unique-binary-search-trees.js
c语言基础 c语言_leetcode题解之0095_unique_binary_search_trees_ii.zip
javascript js_leetcode题解之95-unique-binary-search-trees-ii.js
* [Binary Search Tree](https://github.com/kamyu104/LeetCode#binary-search-tree) * [Breadth-First Search](https://github.com/kamyu104/LeetCode#breadth-first-search) * [Depth-First Search]...
Unique Binary Search Trees 本题参考了 里面的*How Many Binary Trees Are There?*章节。 The first few terms: C(0) = 1 C(1) = C(0)C(0) = 1 C(2) = C(0)C(1) + C(1)C(0) = 2 C(3) = C(0)C(2) + C(1)C(1)
leetcode python 001 Algorithm 用python和java解决了Leetcode上部分问题,另外还有对常规算法和机器学习算法的一些实现,例如用遗传算法解物流配送问题。...Search Trees Python 2017/11/28 Medium 09
【描述】中的"Unique Binary Search Trees"提到了一种特定的LeetCode问题,即"唯一的二叉搜索树"。这个问题要求计算给定整数n的所有不同结构的二叉搜索树的数量。二叉搜索树是一种特殊的二叉树,其中每个节点的左...
- **唯一二叉搜索树(Unique Binary Search Trees)**: 不同的二叉搜索树的数量。 #### 位操作技巧 - **更新位(Update Bits)**: 在一个整数中更新若干位。 - **快速幂(Fast Power)**: 快速计算一个数的幂。 #### ...
leetcode添加元素使和等于 Leetcode-tree 94题 Binary ...Search Trees 这道题我们使用了动态规划的方法。说到动态规划我们这里先总结一下动态规划类型的题该如何做。 动态规划题目特点: 计数型: -有
96.unique-binary-search-trees.cpp [TODO] 70. 爬楼梯.cpp [TODO] 746. min-cost-climbing-stairs.cpp 第 4 天: [待办事项] leetcode/1143。 最长公共子序列.cpp 第 5 天: [待办事项] leetcode/221。 最大平方....
- Unique Binary Search Trees:不同的二叉搜索树的个数。 - Happy Number:一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,也可能是无限...