LeetCode96 不同的二叉搜索樹

給定一個整數 n,求以 1 ... n 爲節點組成的二叉搜索樹有多少種?

示例:

輸入: 3
輸出: 5
解釋:
給定 n = 3, 一共有 5 種不同結構的二叉搜索樹:

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

思路:使用卡特蘭數公式即可解決。

C0=1,Cn+1=Cn*(4*n+2)/(2+n);

Cn=C(n,2*n)/n+1;  溢出

class Solution {
public:
    int numTrees(int n) {
        long c=1;
        for(int i=0;i<n;i++){
            c=c*(4*i+2)/(i+2);
        }
        return c;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章