huimeich / leetcode-solution

0 stars 0 forks source link

96. Unique Binary Search Trees #105

Open huimeich opened 8 years ago

huimeich commented 8 years ago

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
huimeich commented 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];
    }
}
huimeich commented 8 years ago
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];
    }
}