在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结 点,1个度为 2 的结点,10 个度为1 的结点,则树T的叶结点个数是()。 A.41 B.82 C.113 D.122

一、问题

在一棵度为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)
点赞加关注,收藏不迷路!本篇文章对你有帮助的话,还请多多点赞支持!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code_流苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值