Unique Binary Search Trees
Given n, how many structurally unique BST’s (binary search trees) that store values 1 … n?
Example 1
1 | Input: 3 |
解题思路
动态规划。定义 dp[l]
表示 n=l
时 BST
的数量。以每个数 $i\in [1,l]$ 为根节点,左子树有 i-1
个节点,右子树有 l-i
个节点,所以 BST
的数量 $dp[l]=\sum_{i\in [1,l]} dp[i-1]*dp[l-i]$。
BST
的数量属于卡特兰数,满足公式:$C_{2n}^{n}/(n+1),\ n=(0,1,2,…)$。
复杂度分析
- 时间复杂度:$O(n^2)$,两个循环。
- 空间复杂度:$O(n)$,动态规划数组。
代码
1 | class Solution { |