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; } }