本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/43198929

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个节点,求能组成多少个二叉树。

(2)该题和给定n个数字,求其所有进栈出栈顺序总个数是相同的,详情参看数据结构。

(3)本题是运用递归进行实现。

递推关系为: f(n)=C(2n,n)/(n+1) (n=1,2,3,...)。

递归式为: f(n)=f(n-1)*(4*n-2)/(n+1)。

通过该公式进行递归即可得到答案。但是通过递归实现的算法效率显然要低一些。

递推过程:

当n=1时,只有1个根节点,则能组成1种,令n个节点可组成的二叉树数量表示为f(n),  则f(1)=1;

当n=2时,1个根节点固定,还有n-1个节点,可以作为左子树,也可以作为右子树, 即:f(2)=f(0)*f(1)+f(1)*f(0)=2,则能组成2种。

当n=3时,1个根节点固定,还有n-1=2个节点,可以在左子树或右子树, 即:f(3)=f(0)*f(2)+f(1)*f(1)+f(2)*f(0)=5,则能组成5种。

当n>=2时,有f(n)=f(0)*f(n-1)+f(1)*f(n-2)+...+f(n-1)*f(0)

(4)希望本文对你有所帮助。

算法代码实现如下:

 /*** @author liqq*/public int numTrees(int n) {int i;int result = 0;if(n==0) return 1;if(n==1) return 1;for (i = n-1; i>=0 ; i--) {result = result + numTrees(i)*numTrees(n-i-1);}return result;}

Leetcode_96_Unique Binary Search Trees相关推荐

  1. [LeetCode]: 96: Unique Binary Search Trees

    题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...

  2. 【Unique Binary Search Trees II】cpp

    题目: Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. F ...

  3. LeetCode-Unique Binary Search Trees

    研究生开学以来一直在看书看文献,很少有机会去写代码.为了不让以后校招时被虐的太惨,准备每天看一道LeetCode上的题,练练手. 因此准备开一个新的专题,记录下LeetCode上的一些有意思的小的算法 ...

  4. LeetCode: Unique Binary Search Trees [095]

    [题目] Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For ...

  5. 【LeetCode从零单排】No96 Unique Binary Search Trees

    题目 Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For ex ...

  6. LeetCode:Unique Binary Search Trees

    问题描写叙述: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? F ...

  7. leetcode 95. Unique Binary Search Trees II | 96. Unique Binary Search Trees

    95. Unique Binary Search Trees II https://leetcode.com/problems/unique-binary-search-trees-ii/ 题解 题是 ...

  8. LeetCode-95-Unique Binary Search Trees II

    算法描述: Given an integer n, generate all structurally unique BST's (binary search trees) that store va ...

  9. Lecture 9 Random built Binary Search Trees BSTs

    Random built Binary Search Trees  BSTs E[hight] near 3logn Quick Sort? Relation to Quick Sort: BST s ...

最新文章

  1. 基于DQN强化学习训练一个超级玛丽
  2. 独家 | 送你12个关于数据科学学习的关键提示(附链接)
  3. 【采用】知识图谱简介及风控应用场景
  4. excel多元线性拟合_Python一元线性回归分析实例:价格与需求的相关性
  5. 官方一步解决各种Windows更新问题
  6. asp.net定点执行任务总结
  7. NOI2019省选模拟赛 第五场
  8. libjpeg(1)
  9. 面向对象(基础oop)之继承总结
  10. 史上最详细的Maven安装教程以及Maven和eclipse集成
  11. modis数据下载汇总
  12. nmap超快高效扫描端口
  13. 安装虚拟机VMware 出现failed to install the hcmon driver 问题 避坑
  14. 流利阅读 2019.1.23 Tech industry expo opens portal to tomorrow
  15. java web 速成_渐进式Web应用程序:速成课程
  16. 掌控健身节奏 飞利浦降噪运动耳机A7507 上市
  17. Free校园小程序 开源发布,一款集合表白墙、失物招领、兼职和闲置二手买卖的云开发微信小程序
  18. 小白自学c51笔记之数码管1——D74HC245和D74HC138
  19. Oracle ADR(Automatic Diagnostic Repository)介绍
  20. 程序员避免面向监狱编程攻略大盘点

热门文章

  1. 包邮赠书!李航《统计学习方法》详解
  2. ▷Scratch课堂丨在Scratch上制作植物大战僵尸游戏
  3. 网络工程师必备学习内容!深度理解OSPF——OSPF是什么?为什么要用OSPF?
  4. Linux使用alias设置命令别名
  5. HTML有2种路径的写法:绝对路径和相对路径
  6. 《Android 应用案例开发大全(第二版)》——1.5节第一个Android程序——Hello Android...
  7. 【python】——setup.py build_ext --inplace命令解析
  8. 一、什么是Nginx? Nginx的作用是什么?
  9. linux服务器校对和手动修改时间
  10. 【MFC】Ribbon界面开发(一)