关闭

96. Unique Binary Search Trees

88人阅读 评论(0) 收藏 举报
分类:

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

思路:这种求个数的题首先想到用DP。具体到这题,相当于以任何一个点为根节点的时候排列的个数=左边可能排列的个数*右边可能排列的个数。假设C_i表示i个点的排列的可能个数,假设n=3的时候,C_3=C_0*C_1 + C1*C1 + C_1*C_0。即中间总会有一个点,就是左边为0个点的可能组合*右边为1个点的可能组合,然后把左右的情况加起来。其实就是卡特兰数的公式。

http://www.cnblogs.com/springfor/p/3884029.html?utm_source=tuicool&utm_medium=referral

class Solution {
public:
    int numTrees(int n) {
        if(n<=0) return 0;
        vector<int> res(n+1,0);
        res[0] = 1;
        res[1] = 1;
        for(int i = 2; i <= n; i++)
        {
            for(int j = 0; j < i; j++)
            {
                res[i] += res[j] * res[i-j-1];
            }
        }
        
        return res[n];
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:68438次
    • 积分:100
    • 等级:
    • 排名:千里之外
    • 原创:216篇
    • 转载:8篇
    • 译文:0篇
    • 评论:5条
    最新评论