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
1)结构的总数和存储的n个有序数没有关系。即存放的是1,2,3或5、6、9结果都是一样的;
2)n=0\1时,结果都为1;n个有序数。取不论什么一个作为根结点,该值左边的为左子树。右边的为右子树,
在这样的情况下。可能的结构总数为:左子树结构数*右子树结构数。所以原问题就被分解成了两个子问题;
3)将取n个有序数作为根结点的情况的结构问题相加。就可以得到原问题的解,但应注意的是,如:1、2、3
取1或3作为根结点的情况,结构数是同样的,即具有对称性;那么也要考虑到奇偶性;
4)可以被分解成同样的子问题,自己就行採用递归,本程序採用循环的方法。
*/
int numTrees(int n)
{
vector<int> store;
store.push_back(1);
store.push_back(1);
for(int i=2;i<=n;++i)
{
int tmp=0;
for(int j=0;j<i/2;++j)
{
tmp+=2*store[i-1-j]*store[j];
}
if(i%2)
tmp+=store[i/2]*store[i/2]; store.push_back(tmp);
}
return store[n];
}

最新文章

  1. LINQ系列:LINQ to XML查询
  2. Selenium2(WebDriver)_如何判断WebElement元素对象是否存在
  3. Arduino利用TimerOne库产生固定频率和占空比的方波
  4. 虚拟化平台cloudstack(8)——从UI开始
  5. Selenium 代码收集
  6. 无法将Win7安装到GPT分区下解决办法
  7. 对比WDCP面板与AMH面板的区别与选择
  8. 【转】java正则表达式
  9. jvm内存设置
  10. 安装python-devel 在升级到python2.7之后
  11. photoshop菜单显示不全的解决方法
  12. Oracle数据库常用函数
  13. [POJ 1742] Coins 【DP】
  14. hdu 5062
  15. VM下Linux网卡丢失(pcnet32 device eth0 does not seem to be ...)解决方案
  16. Python之路:线程池
  17. Java 开源Wiki:XWiki
  18. 强化学习--Actor-Critic---tensorflow实现
  19. Docker创建运行多个mysql容器
  20. linux第十八章学习笔记

热门文章

  1. MySQL本地登录及数据库导入导出
  2. 使用Docker compose编排Laravel应用
  3. git 知识(转)
  4. 框架之---Django
  5. *lucene索引_的删除和更新
  6. java环境配置——配置tomcat用户
  7. mysql 递归查询父节点 和子节点
  8. python002 Python3 基础语法
  9. hdu 1564水题Play a game
  10. poj2773求第K个与m互质的数