96. 不同的二叉搜索树

 

 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树

思路:卡塔兰数,

G(n): 长度为n的序列的不同二叉搜索树个数。,长度为零,以及长度为一时,二叉搜索树都是一种。C0==C1==1
记为Cn,
C0==1
Cn+1=Cn *2*(2n+1)/(n+2)


题目里n个数,要求的是Cn,所以for里面,i应该是0到n-1.

class Solution {//卡塔兰数,看笔记
    public int numTrees(int n) {
        long c=1;//int类型会溢出,用long,之后强制类型转换
        for(int i=0;i<n;i++)
        {
            c=2*c*(2*i+1)/(i+2);
        }
        return (int)c;
    }
}

  

posted @ 2020-05-05 09:27  弓呆的胖次  阅读(130)  评论(0编辑  收藏  举报