社区
C语言
帖子详情
问:具有n个结点的二叉树有多少种形态 ?
木头呆但不傻
2003-11-10 11:30:41
如题,请给出思路或解题过程。
...全文
2485
9
打赏
收藏
问:具有n个结点的二叉树有多少种形态 ?
如题,请给出思路或解题过程。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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).
得出这个结果的方法很多,组合数学书上一般都有,具体证明自己查书.
n个
结点
组成的
二叉树
有多少
种
不同的
形态
n个
结点
组成的
二叉树
有多少
种
不同的
形态
(卡特兰数)
n 个
结点
的
二叉树
有多少
种
不同的
形态
对于第三
种
情况,左子树有 1 个节点,右子树有 1 个节点,根据前面的推导,有 1
种
形态
。因此,当 n=3 时,共有 5
种
形态
。以此类推,当 n 个节点时,我们可以将其分为 n
种
情况,每
种
情况的
形态
数量为 f(i)×f(n-i-1),其中 i 表示左子树的节点数量,f(i)表示 i 个节点的
二叉树
的
形态
数量。最后,我们可以得到 n 个
结点
的
二叉树
的不同
形态
数量的通项公式为:f(n)=∑(i=0 to n-1) f(i)×f(n-i-1)。当 n=2 时,有两
种
形态
,即根节点有左子节点或右子节点。
n个节点的
二叉树
有多少
种
形态
【n个节点的
二叉树
有多少
种
形态
(Catalan数)】分析过程: (1)先考虑只有一个节点的情形,设此时的
形态
有f(1)
种
,那么很明显f(1)=1(2)如果有两个节点呢?我们很自然想到,应该在f(1)的基础上考虑递推关系。那么,如果固定一个节点后,左右子树的分布情况为1=1+0=0+1,故有f(2) = f(1) + f(1)(3)如果有三个节点,(我们需要考虑固定两个节点的情况么?当然不,因为当节
n个
结点
的
二叉树
一共有多少
种
形态
记n个节点的
二叉树
形态
个数为A[n] 1)0个节点的
二叉树
只有1
种
形态
,A[0]=0;1个节点的
二叉树
只有1
种
形态
,A[1]=1 2)n个节点(n>=2)的
二叉树
有,求和的每一项,分别表示根的左子树为m个节点、右子树为 n-1-m个节点的情况。(总共n个节点,左子树m个节点,根节点有1个,那么右子树的节点数为n-1-m个) 刚好就是catalan数,直接用catalan数的公式:h(n)== ...
n个节点的
二叉树
有多少
种
形态
(Catalan数)
问
题:
具有
3个
结点
的
二叉树
有几
种
形态
? A.4 B.5 C.6 D.7 解析:正确答案: B 你的答案: B(正确)。 C(n)=(1/(n+1))*((2*n)!/(n!*n!)) C(3) = (2*3)!/(3!*3!)/(3+1)=5 【n个节点的
二叉树
有多少
种
形态
(Catalan数)】 分析过程: (1)先考虑只有一个节点的情形,设此时的
形态
有f(1)
种
,那么很明显f(1)=1 (2)如果有两个节点呢?我们很自然想到,应该在f(1)的基础上考虑递推关系。那么,...
C语言
70,014
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章