n个节点能组成多少种二叉树

来源:互联网 发布:java 静态构造函数 编辑:程序博客网 时间:2024/05/14 14:55
 

思想:递归+组合

 

当n=1时,只有1个根节点,则只能组成1种形态的二叉树,令n个节点可组成的二叉树数量表示为h(n),

则h(1)=1;


当n=2时,1个根节点固定,还有n-1个节点,可以作为左子树,也可以作为右子树,

即:h(2)=h(0)*h(1)+h(1)*h(0)=2,则能组成2种形态的二叉树。这里h(0)表示空,所以只能算一种形态,即h(0)=1;


当n=3时,1个根节点固定,还有n-1=2个节点,可以在左子树或右子树,

即:h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=5,则能组成5种形态的二叉树。


以此类推,当n>=2时,可组成的二叉树数量为h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)*h(0)种。

 

即符合Catalan数的定义,可直接利用通项公式得出结果。

递归式:

  h(n)=h(n-1)*(4*n-2)/(n+1);

该递推关系的解为:

  h(n)=C(2n,n)/(n+1) (n=1,2,3,...)


原创粉丝点击