请问,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

    (一直做下去可以做出上面结果,不过需要解很多个方程,比较复杂)

    另外,以一个堆栈的出栈序列的个数考虑以上问题是另外一种思路