问:具有n个结点的二叉树有多少种形态 ?

木头呆但不傻 2003-11-10 11:30:41

如题,请给出思路或解题过程。
...全文
2391 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
s7lx_hacker 2010-06-24
  • 打赏
  • 举报
回复
抱歉说错了。。。是堆栈问题。但是确实是catalan问题。

结果是C(2n,n)/(n+1)
s7lx_hacker 2010-06-24
  • 打赏
  • 举报
回复
二叉树其实是个堆栈问题
考虑n个元素进入或者弹出栈,想象其为某种遍历(先序遍历 中序 后续)
则有N!种结果。。
木头呆但不傻 2003-11-11
  • 打赏
  • 举报
回复
谢谢 ZhangYv(like ASM,抵制日货) (给我了一个方法)
mmlymlymly(mly) (给我另一种思路)

偶已想出来了 :)

根据二叉树的递归定义来求解

设Bn为所有结点数,显然B0=1,
对于n〉=1的情况,二叉树有1个根结点及n-1个非根结点,
而后者可分为两个子集,左子树和右子树分别为k个和n-k-1个结点
所以他们的结点数为分别为Bk和Bn-k-1个从而得知
Bn=Bn=B0*Bn-1+…+Bk*Bn-1-k 也即 ZhangYv(like ASM,抵制日货) 所提供的答案
结果为 Cantalan 数 C(n+1)= 2n!/ [n!*(n+1)!] (n=1,2,3……)
木头呆但不傻 2003-11-11
  • 打赏
  • 举报
回复
to knight0637(蛤蟆之侣)

那确实,组合数学都有 catalan 数 的公式,
但不是每本都有类似计算我这问题的例子。
darcymei 2003-11-10
  • 打赏
  • 举报
回复
从深度考虑,深度最高n最低log2n。然后考虑第二深度(用词不是很规范,不知道该怎么说),对于深度为n的来说,第二深度为0;深度n-1,则指只能为1....然后再是第三深度,第四....根据每种深度可能出现的深度梯队进行排列组合,就是该深度的形态数,再把所有深度的形态数加起来就得解。
knight0637 2003-11-10
  • 打赏
  • 举报
回复
组合数学上都有catalan数,1/(n+1)*(2n n)
木头呆但不傻 2003-11-10
  • 打赏
  • 举报
回复
to ZhangYv(like ASM,抵制日货) :

我手上有一本组合数学的书 曹汝成 编的 上面 讲 卡塔兰 数时没有讲到这个
能再给我具体讲讲,它是怎么和 T 路 对应 起来的吗?


to mmlymlymly(mly) :

你的思路我好像有点感觉,能给出你的具体式子吗?


谢谢大家,希望大家能讲得再透彻些:) (我可以再加100分)
ZhangYv 2003-11-10
  • 打赏
  • 举报
回复
一般书上给出的证明和你问的不一样.关于二叉树节点计数的总个数有:
| 1 [n = 0]
B(n) = |
| n-1
| ∑ B(i) * B(n-i-1) [n >= 1]
i=0
解以上递归式,可以得出组合个数为C(2*n,n)/(n+1),一个殊途同归的做法.
ZhangYv 2003-11-10
  • 打赏
  • 举报
回复
这是个经典的组合计数问题,答案是CATALAN数 = C(2*n,n)/(n+1).
得出这个结果的方法很多,组合数学书上一般都有,具体证明自己查书.

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧