Leetcode_96_Unique Binary Search Trees
本文是在学习中的总结,欢迎转载但请注明出处: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相关推荐
- [LeetCode]: 96: Unique Binary Search Trees
题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...
- 【Unique Binary Search Trees II】cpp
题目: Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. F ...
- LeetCode-Unique Binary Search Trees
研究生开学以来一直在看书看文献,很少有机会去写代码.为了不让以后校招时被虐的太惨,准备每天看一道LeetCode上的题,练练手. 因此准备开一个新的专题,记录下LeetCode上的一些有意思的小的算法 ...
- LeetCode: Unique Binary Search Trees [095]
[题目] Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For ...
- 【LeetCode从零单排】No96 Unique Binary Search Trees
题目 Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For ex ...
- LeetCode:Unique Binary Search Trees
问题描写叙述: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? F ...
- 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/ 题解 题是 ...
- LeetCode-95-Unique Binary Search Trees II
算法描述: Given an integer n, generate all structurally unique BST's (binary search trees) that store va ...
- 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 ...
最新文章
- 基于DQN强化学习训练一个超级玛丽
- 独家 | 送你12个关于数据科学学习的关键提示(附链接)
- 【采用】知识图谱简介及风控应用场景
- excel多元线性拟合_Python一元线性回归分析实例:价格与需求的相关性
- 官方一步解决各种Windows更新问题
- asp.net定点执行任务总结
- NOI2019省选模拟赛 第五场
- libjpeg(1)
- 面向对象(基础oop)之继承总结
- 史上最详细的Maven安装教程以及Maven和eclipse集成
- modis数据下载汇总
- nmap超快高效扫描端口
- 安装虚拟机VMware 出现failed to install the hcmon driver 问题 避坑
- 流利阅读 2019.1.23 Tech industry expo opens portal to tomorrow
- java web 速成_渐进式Web应用程序:速成课程
- 掌控健身节奏 飞利浦降噪运动耳机A7507 上市
- Free校园小程序 开源发布,一款集合表白墙、失物招领、兼职和闲置二手买卖的云开发微信小程序
- 小白自学c51笔记之数码管1——D74HC245和D74HC138
- Oracle ADR(Automatic Diagnostic Repository)介绍
- 程序员避免面向监狱编程攻略大盘点
热门文章
- 包邮赠书!李航《统计学习方法》详解
- ▷Scratch课堂丨在Scratch上制作植物大战僵尸游戏
- 网络工程师必备学习内容!深度理解OSPF——OSPF是什么?为什么要用OSPF?
- Linux使用alias设置命令别名
- HTML有2种路径的写法:绝对路径和相对路径
- 《Android 应用案例开发大全(第二版)》——1.5节第一个Android程序——Hello Android...
- 【python】——setup.py build_ext --inplace命令解析
- 一、什么是Nginx? Nginx的作用是什么?
- linux服务器校对和手动修改时间
- 【MFC】Ribbon界面开发(一)