每日一题 2019 - 04 - 21
题目:
Given n, how many structurally unique BST’s (binary search trees) that store values 1 … n?
Example:
1 | Input: 3 |
解法:
这个题跟昨天的题是一样的,不过昨天的题让具体找出二叉树的种类,而这个题只让找出给定的二叉树的个数,所以这个题可以看作是一个动态规划的题目,具体思路:
- 创建一个 dp 数组用来存放当前 i 个数字大小下有多少种情况
- 如果一个树大小为 2 ,那么这个树有
dp[2] = dp[1] * dp[0] + dp[0] * dp[1]
种情况,可以这么理解,根节点确定之后,还有一个结点需要分配,那么要么左边一个右边零个,要么右边一个左边零个;其余大于 2 个结点情况也类似;
代码:
1 | class Solution { |