问题描述:卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。输入一个整数n,计算h(n)。其递归式如下:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2,h(0) = h(1) = 1) 该递推关系的解为:h(n)=C(2n,n)/(n+1) (n=1,2,3,...)
对于有n个节点的二叉树的计数,我们去掉根节点,假设对左子树的形态有b[i]种,对右子树的形态有b[n-1-i]种,容易得出,对有n个节点的二叉树,容易有 b[n] = sum[k = 0 .. n - 1](b[k]*b[n - 1 - k]);该数列正是catalan数的一种定义。
结论 b[n] = (1/(n + 1))*C(2n,n) ;
http://www.cnblogs.com/dztgc/archive/2013/04/26/3043656.html
leetcode 中有一道 generate parentheses 题目,可以参照这方法: