一、问题
在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为 2 的结点,10 个度为1 的结点,则树T的叶结点个数是(B)。
- A.41
- B.82
- C.113
- D.122
分析:
求解该问题时需要了解的几个概念:
①结点的度:该结点的子结点个数。
例如:度为4的结点意思就是,该结点有4个子结点,度为3,则3个子结点,以此类推。
②树的度:树中结点的最大度数。
例如:度为4的树,则说明,树中结点的最大度数为4,即最多有4个子结点。
③叶子结点:度为0(没有子女结点)的结点。
例如:本题要求的叶结点的个数,其实也就是求度为0的结点的个数。
那么根据这些,首先我们可以拟定一个思路,就是先求总结点数,减去各个有度的结点数,最终得到的就是叶子结点数。
二、思路实现
-
第一步,求总结点数 = n0 + n1+n2+…+n_m (m代表度数,n代表对应度数的结点数)
例如:如n0 ,即度为0的结点(叶结点)个数,n1,度为1结点的个数,其余同理。
那么据此,我们可以推出总结点数 = n0+20+10+1+10 = n0 + 41
-
第二步,求总分支数 = 0 * n0 + 1 * n1 + 2 * n2 + … +m * n_m = 1 n1 + 2 n2 +… m n_m
度为m的结点可以分出m条分支,例如度为1的结点,则可以分出1条分支,度为2的结点,则两条分支,其余同理。
所以在总结点数求法的基础上,我们乘上,对应的分支数,就是总分支数,总分支数 = 1 * 10 + 2 * 1 + 3 * 10 + 4 * 20 = 10 + 2 +30 +80 =122
-
第三步,根据二者关系求解叶结点n0的个数(总结点数 = 总分支数 + 1)
由第一步,总结点数 = n0 + 41 ①,第二步,总分支数 = 122 ②
联立①②,可得, n0 + 41 = 122 +1
解得,n0 = 82。
故本题选B,叶结点的个数为82。
三、补充解释(为什么总结点数 = 总分支数 + 1?)
因为根据树的定义,除了根结点以外,每个结点都有一个唯一的父结点,即每个结点都对应一个指向它的分支。
因此,除了根结点以外的结点数等于分支数,即总结点数 - 1 = 总分支数。而根结点没有父结点,也没有指向它的分支,所以树中的结点数等于分支数加1,即总结点数 = 总分支数 + 1。
问题记录时间:2023.10.23
Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)
点赞加关注,收藏不迷路!本篇文章对你有帮助的话,还请多多点赞支持!