Open huimeich opened 8 years ago
public class Solution {
public int numTrees(int n) {
int[] dp = new int[n+1];
return helper(n,dp);
}
public int helper(int n, int[] dp){
if (dp[n] > 0) return dp[n];
if (n < 3) {
dp[n] = Math.max(1,n);
return dp[n];
}
for (int i = 0; i < n; i++){
dp[n] += helper(i, dp) * helper(n-i-1,dp);
}
return dp[n];
}
}
public class Solution {
public int numTrees(int n) {
int[] dp = new int[n+1];
dp[0] = 1; dp[1] = 1;
for (int i = 2; i <= n; i++) {
for (int j = 0; j < i; j++){
dp[i] += dp[j]*dp[i-j-1];
}
}
return dp[n];
}
}
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.