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

目录

  • 高度为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叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第1张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第2张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第3张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第4张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第5张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第6张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第7张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第8张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第9张图片

高度为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)............①

数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第10张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第11张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第12张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第13张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第14张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第15张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第16张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第17张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第18张图片


具有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)............②



数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第19张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第20张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第21张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第22张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第23张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第24张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第25张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第26张图片数据结构-高度为h的m叉树至多结点/n个结点的m叉树的最小高度(公式推导)_第27张图片
综上,本篇文章推导了以下两个式子:
① 高度为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♪(・ω・)ノ !

附送一张壁纸:

你可能感兴趣的:(数据结构,数据结构,算法,考研,王道,计算机考研)