Unique Binary Search Trees

Given n, how many structurally unique BSTs (binary search trees) that store values 1...n?

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





public class Solution {
    /**
     * @paramn n: An integer
     * @return: An integer
     */
    public int numTrees(int n) {
        // write your code here
        int[] res=new int[n+1];
        if(n==0) return 1;
        if(n==1) return 1;
        
        res[0]=1;
        res[1]=1;
        //if(n==2) res[2]=2;
        
        for(int i=2;i<=n;i++)
        {
            for(int j=1;j<=i;j++)
            {
              res[i]+=res[j-1]*res[i-j];
            }
        }
        
        return res[n];
    }
}

 

posted on 2016-01-08 04:56  一心一念  阅读(182)  评论(0编辑  收藏  举报

导航