n个点二叉树的个数
N个节点的二叉树个数
先考虑只有一个节点的情形,f(1)=1
先固定根,递归考虑左右子树
用S1表示左子树,S2是右子树
f(2)=S1(1)+S2(1)=2
如果有三个节点呢?
左右子树的分布情况为2=0+2=1+1=2+0。
所以有3个节点时,递归形式为f(3)=f(2) + f(1)*f(1) + f(2).
那么有n个节点呢?我们固定一个节点,那么左右子树的分布情况为n-1=n-1 + 0 = n-2 + 1 = ... = 1 + n-2 = 0 + n-1
f(n) = f(n-1) + f(n-2)f(1) + f(n-3)f(2) + ... + f(1)f(n-2) + f(n-1)
前几个数为1,1,2,5,14,42,132。
此外,还有一个通项公式为1/(n+1) * C(n, 2n) = C(n, 2n) - C(n-1, 2n) , n = 0,1,2,...
卡特兰数公式