Unique Binary Search Trees
Last updated
Last updated
class Solution(object):
def numTrees(self, n):
"""
:type n: int
:rtype: int
"""
dp = [0] * (n + 1)
dp[0] = dp[1] = 1
for i in range(2, n + 1):
for j in range(0, n):
dp[i] += dp[j] * dp[i - j - 1]
return dp[n]class Solution {
public int numTrees(int n) {
int[] dp = new int[n + 1];
dp[0] = 1;
for (int i = 1; i <= n; ++i) {
// 枚举长度
for (int j = 1; j <= i; ++j) {
// 枚举root点
dp[i] += dp[j - 1] * dp[i - j];
}
}
return dp[n];
}
}