当前位置:编程学习 > C/C++ >>

已知某树有2个2度结点,3个3度结点,4个4度结点,问有几个叶子结点?

补充:robin大侠 下面一道题有些人是按照下面的解法算的 这样的解法对吗? 一棵无向树T有3个2度结点,2个3度结点,2个4度结点,其余为叶。则T共有多少个结点,多少片叶? 解答:一共是21个结点,叶子结点为14个,简单的方法是你随意照着条件画一个就行,要算也简单,叶子结点=3*2+2*3+2*4-3-2-2+1=14,也就是等于总度数-节点数+1 按理不是说先设树总结点数为N,然后3x2+2x3+2x4+(N-2-3-4)x1=(N-1)x2 这样解出来的N为13 总结点数也才13 可是上面哪种方法算的叶子节点就有14个 哪种对呢? 谢谢!
答案:一棵无向树T有3个2度结点,2个3度结点,2个4度结点,其余为叶。则T共有多少个结点,多少片叶?
像这种题目一般做法还是用握手定理列式子,即你写的最后一种解法,但过程错误。设一共有N个节点,则边数是N-1,由握手定理,3×2+2×3+2×4+(N-3-2-2)×1=(N-1)×2 ,解得N=15,所以一共有15个节点,叶子有15-2-3-4=8个。
第一个解法也是用握手定理做的,但是式子错了。应该是叶子结点=3*2+2*3+2*4-2*(3+2+2-1),即叶子节点数=已知总度数-2×(已知节点数-1)
-----------
你一开始提问的问题是:已知某树有2个2度结点,3个3度结点,4个4度结点,问有几个叶子结点?
设有x个叶子节点,则2×2+3×3+4×4+x=2(x+2+3+4-1),得x=13。
有13个叶子节点。
------
你先确认一下到底问题是哪一个?
其他:这么简单,一个公式既可以搞定
公式推导
n0+n1+n2+n3+n4=n1+2*n2+3*n3+4*n4+1
化简公式得:
n0=n2+2*n3+3*n4+1 带入
n2=2,n3=3,n4=4
所以
n0=2+2*3+2*4+1=2+6+8+1=17
 
问题补充题:
n0=3+2*2+3*2+1=3+4+6+1=14 

上一个:全国计算机二级C语言笔试题
下一个:c++数据结构内部排序问题,整数排序

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,