96. Unique Binary Search Trees
来源:互联网 发布:罗技g502软件 编辑:程序博客网 时间:2024/05/29 04:03
Given n, how many structurally uniqueBST'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
这个题虽然难度是中等但其实比较简单。我们可以类推一下,当n=2时,显然有两种情况。再比较n=3时,以两头元素(1 or 3)作为根时,树简化成n=2时的情况,所以状态转移方程中肯定包含2*f(n-1) 这一项。再看中间元素,由于是二叉搜索树,所以中间元素将n分成左右两颗子树,且子树情况已经求得,所以中间项的子树数目等于左右子树情况数目的乘积(如n=3时,中间元素是2,将两边分成1和1,中间元素的子树数目等于f(1)*f(1),有多个中间元素时分别计算相加即可)。
所以状态转移方程可以表达成:f(n)=2*f(n-1)+Σ中间项子树情况;
例如:f(5)=2*f(4)+(f(1)*f(3)+f(2)*f(2)+f(3)*f(1))=2*14+(1*5+2*2+5*1)=42。
class Solution {public:int helper(vector<int> m, int n) {int sum = 0;for (int i = 2;i < n;i++) {sum = sum + m[i - 2] * m[n - i-1];}return sum;}int numTrees(int n) {vector<int> m(n);m[0] = 1;for (int i = 1;i < n;i++) {m[i] = 2 * m[i - 1] + helper(m,i+1);}return m[n - 1];}};
0 0
- 96.Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 关于使用DrawerLayout建立侧滑菜单时,下层布局依然可响应点击事件的解决方法
- spring 注入方式
- require.js的结构及常用组件用法
- codeforces 792C Divide by Three
- 十大编程算法助程序员走上高手之路
- 96. Unique Binary Search Trees
- 删除linux里已断开的软链接(dangling link)
- Android FirBase RealTimeDb JsonTree设计,基于RealTime聊天的json格式
- Android 偷梁换柱!!!带你实现修改shareSDK九宫格布局,去除阴影的动画。
- IntelliJ IDEA for mac 快捷键
- 数组,array,vector
- window上轻松安装CNTK并运行demo
- SpringMVC封装数据的类型转化器( Date)
- 单元测试心得