LeetCode -- 96. Unique Binary Search Trees
来源:互联网 发布:家常菜谱软件下载 编辑:程序博客网 时间:2024/05/22 16:45
题目:
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
思路:
这是一道动态规划题,有一定难度,主要是得发现其中的规律,然后写出状态转移方程,编码就比较简单了。我们先来分析一波规律:
n = 0
,树为空,只有1种结构,d[0]=1 ;n = 1
,只有一个根结点的单结点树,也是只有1种结构,d[1]=1 ;n = 2
,两个结点,有两种结构,“1”为根结点,或者“2”为根结点,d[2]=2 ;分析题目中
n = 3
的情况:- “1”为根结点,左子树为空,右子树结点数为2,所以共有
d[0]×d[2] ; - “2”为根结点时,左子树和右子树结点数均为1,所以共有
d[1]×d[1] ; - “3”为根结点,左子树结点数为2,右子树为空,所以共有
d[2]×d[0] ;
综上,所以
n = 3
时,d[3]=d[0]×d[2]+d[1]×d[1]+d[2]×d[0]=5 ;- “1”为根结点,左子树为空,右子树结点数为2,所以共有
分析
n = 4
的情况:- “1”为根结点,左子树为空,右子树结点数为3,所以共有
d[0]×d[3] ; - “2”为根结点时,左子树结点数为1,右子树结点数均为2,所以共有
d[1]×d[2] ; - “3”为根结点,左子树结点数为2,右子树结点数为1,所以共有
d[2]×d[1] ; - “4”为根结点,左子树结点数为3,右子树为空,所以共有
d[3]×d[0] ;
- “1”为根结点,左子树为空,右子树结点数为3,所以共有
综上,所以n = 4
时,
至此,我们总结出状态转移方程:
C++代码:
class Solution {public: int numTrees(int n) { int d[100]={1,1,2}; for(int i=3;i<=n;i++) { for(int j=0,k=i-1;j<i,k>=0;j++,k--) { d[i] += d[j]*d[k]; } } return d[n]; }};
阅读全文
0 0
- LeetCode 96. Unique Binary Search Trees II
- [LeetCode]96.Unique Binary Search Trees
- 96. Unique Binary Search Trees Leetcode
- [Leetcode] 96. Unique Binary Search Trees
- LeetCode --- 96. Unique Binary Search Trees
- [leetcode] 96.Unique Binary Search Trees
- [leetcode] 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees LeetCode
- <LeetCode OJ> 96. Unique Binary Search Trees
- [LeetCode]96. Unique Binary Search Trees
- [LeetCode]96. Unique Binary Search Trees
- LeetCode 96. Unique Binary Search Trees
- *LeetCode 96. Unique Binary Search Trees
- Leetcode 96. Unique Binary Search Trees
- LeetCode *** 96. Unique Binary Search Trees
- LeetCode 96. Unique Binary Search Trees
- LeetCode 96.Unique Binary Search Trees
- Leetcode:96. Unique Binary Search Trees
- 与Mysql互交(增/删/改/查)
- Java四种线程池的使用
- servlet多请求处理
- [BZOJ4828][Hnoi2017]大佬-DP+DFS
- 2017东北地区赛D题 splay
- LeetCode -- 96. Unique Binary Search Trees
- mysql 状态查询
- Java监听器
- POJ3662-Telephone Lines
- opengles(一) hello world
- mongoose模糊查询+限制条件
- [PAT-乙级]1046.划拳
- 扩展ThreadPoolExecutor
- C# 反射