数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)


在学习数据结构中的树时,会遇到如下两个结论:

① 高度为hm叉树至多结点数为
( m h − 1 ) / ( m − 1 ) . . . . . . . . . . . . ① (m^h-1)/(m-1)............① (mh1)/(m1)............①

② 具有n个结点的m叉树的最小高度为 ⌈ l o g m ( n ( m − 1 ) + 1 ) ⌉ . . . . . . . . . . . . ② \left \lceil log_m(n(m-1)+1) \right \rceil ............② logm(n(m1)+1)............②

许多初学者并不知道是怎么推出来的,死记又费时间 /kk

本篇文章来具体推导一下公式

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

高度为h的m叉树至多结点数

由结论,度为 m m m 的树中,第 i i i 层上至多有 m i − 1 m^{i-1} mi1 个结点

于是可得如下表格:

高度结点总数
1 1 1 1
2 1 + m 1+m 1+m
3 1 + m + m 2 1+m+m^2 1+m+m2
4 1 + m + m 2 + m 3 1+m+m^2+m^3 1+m+m2+m3
5 1 + m + m 2 + m 3 + m 4 1+m+m^2+m^3+m^4 1+m+m2+m3+m4
··· ⋅ ⋅ ⋅ ··· ⋅⋅⋅
i 1 + m + m 2 + ⋅ ⋅ ⋅ + m i − 1 1+m+m^2+···+m^{i-1} 1+m+m2+⋅⋅⋅+mi1

现在,设高度为hm叉树至多所需结点数为n
那么结合上述表格,可得:
n = 1 + m + m 2 + ⋅ ⋅ ⋅ + m h − 1 n=1+m+m^2+···+m^{h-1} n=1+m+m2+⋅⋅⋅+mh1
等比数列求和公式
S = a 1 1 − q n 1 − q S = a_1\frac{1 - q^n}{1 - q} S=a11q1qn
其中,a1为首项,q为公比,n为项数,S为等比数列前n项和。

于是原式可以化为

n = ( m h − 1 ) / ( m − 1 ) n=(m^h-1)/(m-1) n=(mh1)/(m1)
由于n一定是整数,所以 n ≤ ( m h − 1 ) / ( m − 1 ) n≤(m^h-1)/(m-1) n(mh1)/(m1)

高度为h的m叉树至多结点数
( m h − 1 ) / ( m − 1 ) . . . . . . . . . . . . ① (m^h-1)/(m-1)............① (mh1)/(m1)............①

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述


具有n个结点的m叉树的最小高度

现在开始推导具有n个结点的m叉树的最小高度。

首先由上面刚推出来的①式
n = ( m h − 1 ) / ( m − 1 ) . . . . . . . . . . . . ① n=(m^h-1)/(m-1)............① n=(mh1)/(m1)............①
化出关于h的表达式

n ( m − 1 ) = m h − 1 n(m-1)=m^h-1 n(m1)=mh1 m h = n ( m − 1 ) + 1 m^h=n(m-1)+1 mh=n(m1)+1 l o g m m h = l o g m ( n ( m − 1 ) + 1 ) log_mm^h=log_m(n(m-1)+1) logmmh=logm(n(m1)+1) h = l o g m ( n ( m − 1 ) + 1 ) h=log_m(n(m-1)+1) h=logm(n(m1)+1)

因为h只能是正整数,所以向上取整原式。最终表达式

具有n个结点的m叉树的最小高度
h = ⌈ l o g m ( n ( m − 1 ) + 1 ) ⌉ . . . . . . . . . . . . ② h=\left \lceil log_m(n(m-1)+1) \right \rceil............② h=logm(n(m1)+1)............②



在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
综上,本篇文章推导了以下两个式子:
① 高度为hm叉树至多结点数为
( m h − 1 ) / ( m − 1 ) . . . . . . . . . . . . ① (m^h-1)/(m-1)............① (mh1)/(m1)............①

② 具有n个结点的m叉树的最小高度为 ⌈ l o g m ( n ( m − 1 ) + 1 ) ⌉ . . . . . . . . . . . . ② \left \lceil log_m(n(m-1)+1) \right \rceil ............② logm(n(m1)+1)............②


有帮助的话,点个赞让更多人看到吧ヽ(^ー^)人(^ー^)ノ
如有错误请指出,尽量马上修改,Thanks♪(・ω・)ノ !

附送一张壁纸:
在这里插入图片描述

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值