计算 m m m叉树的最小高度
层数 | 结点数 |
---|---|
第一层 | 1 1 1 |
第二层 | m 1 m^1 m1 |
第三层 | m 2 m^2 m2 |
⋮ \vdots ⋮ | ⋮ \vdots ⋮ |
第 h h h层 | m h − 1 m^{h-1} mh−1 |
故
m
m
m叉树应满足:每层都应为满结点。设结点数为
n
n
n,则
n
≤
1
+
m
1
+
m
2
+
⋯
+
m
h
−
1
n\le 1+m^1+m^2+\cdots+m^{h-1}
n≤1+m1+m2+⋯+mh−1。利用数列前
n
n
n项和公式:
等差数列前
n
项和
:
S
n
=
n
(
a
1
+
a
n
)
2
=
n
a
1
+
n
(
n
+
1
)
2
d
等比数列前
n
项和
:
S
n
=
a
1
(
1
−
q
n
)
1
−
q
\begin{equation*} \begin{aligned} &等差数列前n项和:S_n=\frac{n(a_1+a_n)}{2}=na_1+\frac{n(n+1)}{2}d\\ \\ &等比数列前n项和:S_n=\frac{a_1(1-q^n)}{1-q} \end{aligned} \end{equation*}
等差数列前n项和:Sn=2n(a1+an)=na1+2n(n+1)d等比数列前n项和:Sn=1−qa1(1−qn)
n
≤
1
⋅
(
1
−
m
h
)
1
−
m
⟹
n
m
−
n
+
1
≤
m
h
−
1
n\le\frac{1·(1-m^{h})}{1-m}\Longrightarrow nm-n+1\le m^{h-1}
n≤1−m1⋅(1−mh)⟹nm−n+1≤mh−1两边取对数得:
h
=
⌈
log
m
(
n
m
−
n
+
1
)
⌉
h=\lceil\log_m(nm-n+1)\rceil
h=⌈logm(nm−n+1)⌉
树易混淆概念
注意区分以下概念:
-
树的高度:是从下往上数
-
树的深度:从上往下数
-
树的度:各结点的度的最大值
如上面树的度 = 3 =3 =3,是结点
D
度的计算
树中结点数等于所有结点的度数之和加上 1 1 1(根节点)
度为 m m m的树中第 i i i层至多有 m i − 1 m^{i-1} mi−1个结点,即满 m m m叉树的情况。
例
1
:
\Large 例1:
例1:已知一棵树度为
4
4
4的树中,度为
0
,
1
,
2
,
3
0,1,2,3
0,1,2,3的结点数分别为
14
,
4
,
3
,
2
14,4,3,2
14,4,3,2,求该树的结点总数
n
n
n和度为
4
4
4的结点个数,并给出推导过程。
解
:
设
n
i
表示度为
i
的结点
,
则总结点数
n
:
①
n
=
n
0
+
n
1
+
n
2
+
n
3
+
n
4
=
23
+
n
4
且树种结点数等于所有结点度数之和
+
1
②
n
=
n
0
⋅
0
+
n
1
⋅
1
+
n
2
⋅
2
+
n
3
⋅
3
+
n
4
⋅
4
=
0
⋅
14
+
1
⋅
4
+
2
⋅
3
+
3
⋅
2
+
4
⋅
n
4
+
1
=
17
+
4
n
4
故
17
+
4
n
4
=
23
+
n
4
,
得
n
4
=
2
,
n
=
25
∴
该树总结点数为
25
,
n
4
为
2
\begin{equation*} \begin{aligned} \\\Large{解:}\\ &设n_i表示度为i的结点,则总结点数n:\\ \\ &①n=n_0+n_1+n_2+n_3+n_4=23+n_4\\ \\ &且树种结点数等于所有结点度数之和+1\\ \\ &②n=n_0·0+n_1·1+n_2·2+n_3·3+n_4·4\\ \\ &=0·14+1·4+2·3+3·2+4·n_4+1\\ \\ &=17+4n_4\\ \\ &故17+4n_4=23+n_4,得n_4=2,n=25\\ \\ &\therefore 该树总结点数为25,n_4为2 \end{aligned} \end{equation*}
解:设ni表示度为i的结点,则总结点数n:①n=n0+n1+n2+n3+n4=23+n4且树种结点数等于所有结点度数之和+1②n=n0⋅0+n1⋅1+n2⋅2+n3⋅3+n4⋅4=0⋅14+1⋅4+2⋅3+3⋅2+4⋅n4+1=17+4n4故17+4n4=23+n4,得n4=2,n=25∴该树总结点数为25,n4为2
例
2
:
\Large 例2:
例2:已知一棵度为
m
m
m的树中,有
n
1
n_1
n1个度为
1
1
1的结点,有
n
2
n_2
n2个度为
2
2
2的结点
⋯
\cdots
⋯有
n
m
n_m
nm个度为
m
m
m的结点,问该树有多少个叶结点。
解
:
树中结点数等于所有结点的度数之和加上
1
:
即
n
=
n
1
+
2
n
2
+
⋯
+
m
n
m
+
1
=
∑
i
=
1
m
i
n
i
+
1
且总结点数
n
=
n
0
+
n
1
+
⋯
+
n
m
,
即
n
0
=
∑
i
=
1
m
i
n
i
−
(
n
1
+
n
2
+
⋯
+
n
m
)
+
1
=
∑
i
=
1
m
i
n
i
−
∑
i
=
1
m
n
i
+
1
=
1
+
∑
i
=
1
m
n
i
(
i
−
1
)
\begin{equation*} \begin{aligned} \\\Large{解:}\\ &树中结点数等于所有结点的度数之和加上1:\\ \\ &即n=n_1+2n_2+\cdots+mn_m+1=\sum_{i=1}^{m}in_i+1\\ \\ &且总结点数n=n_0+n_1+\cdots+n_m,即\\ \\ &n_0=\sum_{i=1}^{m}in_i-(n_1+n_2+\cdots+n_m)+1\\ \\ &=\sum_{i=1}^{m}in_i-\sum_{i=1}^{m}n_i+1=1+\sum_{i=1}^{m}n_i(i-1) \end{aligned} \end{equation*}
解:树中结点数等于所有结点的度数之和加上1:即n=n1+2n2+⋯+mnm+1=i=1∑mini+1且总结点数n=n0+n1+⋯+nm,即n0=i=1∑mini−(n1+n2+⋯+nm)+1=i=1∑mini−i=1∑mni+1=1+i=1∑mni(i−1)
二叉树易混淆知识点
满二叉树:一棵高度为 h h h,且含有 2 h − 1 2^{h}-1 2h−1个结点的二叉树称为满二叉树,即树中每层含有最多的结点。
完全二叉树:当且仅当其每个结点都与高度为 h h h的满二叉树中编号为 1 ∼ n 1\sim n 1∼n的结点一一对应时,称为完全二叉树。

完全二叉树特点:
- 只有最后两层可能有叶子结点;
- 且最多只有一个度为 1 1 1的结点。
- 按层序从 1 1 1开始编号,结点 i i i的左孩子为 2 i 2i 2i,右孩子为 2 i + 1 2i+1 2i+1;结点 i i i的父结点为 [ i / 2 ] [i/2] [i/2]
- i ≤ [ n / 2 ] i\le[n/2] i≤[n/2]为分支结点, i > [ n / 2 ] i>[n/2] i>[n/2]为叶子结点,即若 n n n为奇数,则每个分支结点都有左右孩子;若为偶数,则编号最大的分支结点( n 2 \frac{n}{2} 2n)只有左孩子,没有右孩子,其余分支结点左、右孩子都有。
- 一个结点如果有孩子,一定是左孩子。
- 结点 i i i所在层次(深度),为 ⌊ log 2 i ⌋ + 1 \lfloor\log_2i\rfloor+1 ⌊log2i⌋+1
注意:满二叉树是完全二叉树,而完全二叉树不一定是满二叉树。
二叉树性质及计算
(1)非空二叉树上的叶结点数等于度为
2
2
2的结点数加
1
1
1,即
n
0
=
n
2
+
1
n_0=n_2+1
n0=n2+1
证明
:
假设树中结点总数为
n
,
n
i
表示度为
i
结点数
,
则
:
①
n
=
n
0
+
n
1
+
n
2
②
n
=
n
1
+
2
n
2
+
1
(
树的结点数
=
总度数
+
1
)
此时②
−
①
⟹
n
0
=
n
2
+
1
,
即叶子结点比二分支结点多一个。
\begin{equation*} \begin{aligned} \\\Large{证明:}\\ &假设树中结点总数为n,n_i表示度为i结点数,则:\\ \\ &①n=n_0+n_1+n_2\\ \\ &②n=n_1+2n_2+1(树的结点数=总度数+1)\\ \\ &此时②-①\Longrightarrow n_0=n_2+1,即叶子结点比二分支结点多一个。 \end{aligned} \end{equation*}
证明:假设树中结点总数为n,ni表示度为i结点数,则:①n=n0+n1+n2②n=n1+2n2+1(树的结点数=总度数+1)此时②−①⟹n0=n2+1,即叶子结点比二分支结点多一个。
(2)具有
n
n
n个
(
n
>
0
)
(n>0)
(n>0)结点的完全二叉树的高度为
⌈
log
2
(
n
+
1
)
⌉
\lceil\log_2(n+1)\rceil
⌈log2(n+1)⌉或
⌊
log
2
n
⌋
+
1
\lfloor\log_2n\rfloor+1
⌊log2n⌋+1
层数 | 结点数 |
---|---|
第一层 | 1 1 1 |
第二层 | 2 1 2^1 21 |
第三层 | 2 2 2^2 22 |
⋮ \vdots ⋮ | ⋮ \vdots ⋮ |
第 h h h层 | 2 h − 1 2^{h-1} 2h−1 |
令高度为 h h h,故结点总数 n ≤ 1 ⋅ ( 1 − 2 h ) 1 − 2 = 2 h − 1 ⟹ log 2 ( n + 1 ) ≤ h n\le \frac{1·(1-2^{h})}{1-2}=2^h-1\Longrightarrow \log_2(n+1)\le h n≤1−21⋅(1−2h)=2h−1⟹log2(n+1)≤h,即 ⌈ log 2 ( n + 1 ) ⌉ \lceil\log_2(n+1)\rceil ⌈log2(n+1)⌉.
例
:
\Large 例:
例:一棵有
124
124
124个叶结点的完全二叉树,最多有多少个结点
解
:
若总结点数为
n
,
n
i
表示度为
i
结点数
,
叶结点
n
0
=
124
由于
n
0
=
n
2
+
1
⟹
n
2
=
123
故
n
=
n
0
+
n
1
+
n
2
=
247
,
由完全二叉树特性
:
i
≤
n
2
为分支结点
,
i
>
n
2
为叶结点
,
n
1
结果为
0
或
1
且
247
2
=
123
⋯
1
,
由于
n
0
=
124
,
∴
n
1
=
1
综上
,
n
=
248
\begin{equation*} \begin{aligned} \\\Large{解:}\\ &若总结点数为n,n_i表示度为i结点数,叶结点n_0=124\\ \\ &由于n_0=n_2+1\Longrightarrow n_2=123\\ \\ &故n=n_0+n_1+n_2=247,由完全二叉树特性:\\ \\ &i\le\frac{n}{2}为分支结点,i>\frac{n}{2}为叶结点,n_1结果为0或1\\ \\ &且\frac{247}{2}=123\cdots1,由于n_0=124,\therefore n_1=1\\ \\ &综上,n=248 \end{aligned} \end{equation*}
解:若总结点数为n,ni表示度为i结点数,叶结点n0=124由于n0=n2+1⟹n2=123故n=n0+n1+n2=247,由完全二叉树特性:i≤2n为分支结点,i>2n为叶结点,n1结果为0或1且2247=123⋯1,由于n0=124,∴n1=1综上,n=248