N个结点可以构成多少个不同的二叉树?
问题描述:
N个结点可以构成多少个不同的二叉树?
如题,结点没有编号,即结点是无序的.请给出推导的过程和结果公式,
答案是(从2N中取得N的组合数)/(N+1),有记得是怎么推导的么?
答
这个问题有点难度
先跟你说答案吧(1/n+1)*C(n,2n) 注:C是组合符号
关于这个推导的证明需要一个递推公式:
在n值小的情况下,可以直观看到b0=1 为空树,b1 =1只有一个节点,
b2 = 2,b3 = 5,所以一般情况下,一个具有n个节点的二叉树可以看是一个根节点,一棵具有i个节点的左子树,和一棵具有n-i-1个节点的右子树组成
写成递推式为:
b0 = 1
b1 = b0*bn + b1*bn-1 + b2* bn-2 .n >=1
(一直做下去可以做出上面结果,不过需要解很多个方程,比较复杂)
另外,以一个堆栈的出栈序列的个数考虑以上问题是另外一种思路