96. Unique Binary Search Trees 动态规划
2016-04-09 13:31
381 查看
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.
分析:
参见leetcode上的分析Leetcode
代码:
class Solution {
public:
int numTrees(int n) {
vector<int>G(n+1,0);
// for(int t=1;t<G.size();++t)
G[0]=1;
G[1]=1;
for(int i=2;i<=n;++i)
for(int j=0;j<i;++j)
G[i]=G[i]+G[j]*G[i-j-1];
return G
;
}
};
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
分析:
参见leetcode上的分析Leetcode
代码:
class Solution {
public:
int numTrees(int n) {
vector<int>G(n+1,0);
// for(int t=1;t<G.size();++t)
G[0]=1;
G[1]=1;
for(int i=2;i<=n;++i)
for(int j=0;j<i;++j)
G[i]=G[i]+G[j]*G[i-j-1];
return G
;
}
};
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- C++动态规划之最长公子序列实例
- C++动态规划之背包问题解决方法
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- 一波二叉树遍历问题的C++解答实例分享
- C++非递归队列实现二叉树的广度优先遍历
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- C#非递归先序遍历二叉树实例
- C++将二叉树转为双向链表及判断两个链表是否相交
- C++非递归建立二叉树实例
- C语言实现找出二叉树中某个值的所有路径的方法
- C++实现二叉树遍历序列的求解方法
- C#使用动态规划解决0-1背包问题实例分析
- C语言实现二叉树遍历的迭代算法
- C++实现查找二叉树中和为某一值的所有路径的示例
- 用C语言判断一个二叉树是否为另一个的子结构
- C++实现二叉树非递归遍历方法实例总结
- C++二叉树结构的建立与基本操作
- 深入遍历二叉树的各种操作详解(非递归遍历)