树
名词解释:
结点的度: 树中一个结点的孩子个数
树的度:树中最大度数
分支结点:度大于0的点
叶节点:度为0的点
公式
1.树的结点数 = 所有节点的度数之和 + 1
2.度为 m 的树中第 i 层上至多有
m
i
−
1
m^{i - 1}
mi−1个结点
i
>
1
i > 1
i>1
pro:第 1 层至多 1 个结点
(
2
0
)
(2^0)
(20)个,第二层至多 2 个结点
(
2
1
)
个
(2^1)个
(21)个,可以通过数学归纳法证明第 i 层有
2
i
−
1
2^{i - 1}
2i−1个结点
3.高度为 h 的 m 叉树至多有
m
h
−
1
m
−
1
\frac{m^h - 1}{m - 1}
m−1mh−1个结点
pro:第 1,2,3…n 层分别为
m
0
,
m
1
,
m
2
,
.
.
.
m
n
−
1
m^0,m^1,m^2,... m^{n - 1}
m0,m1,m2,...mn−1个,那么等比数列求和为
1
∗
(
1
−
m
h
)
1
−
m
\frac{1 * (1 - m^h)}{1 - m}
1−m1∗(1−mh) =
m
h
−
1
m
−
1
\frac{m^h - 1}{m - 1}
m−1mh−1个结点
具有 n 个结点的 m 叉树的最小高度为
⌈
log
m
n
∗
(
m
−
1
)
+
1
⌉
\lceil \log_{m}^{n*(m - 1) + 1}\rceil
⌈logmn∗(m−1)+1⌉
pro
:
n
≤
m
h
−
1
m
−
1
,
:n \leq \frac{m^h - 1}{ m - 1},
:n≤m−1mh−1,解不等式得
n
≥
log
m
n
∗
(
m
−
1
)
+
1
n \geq \log_{m}^{n * (m - 1) + 1}
n≥logmn∗(m−1)+1,再向上取整,即
⌈
log
m
n
∗
(
m
−
1
)
+
1
⌉
\lceil \log_{m}^{n * (m - 1) + 1}\rceil
⌈logmn∗(m−1)+1⌉
二叉树
定义:每个结点至多有两个结点,并且二叉树的子树有左右之分,次序不能颠倒
递归定义:空树(结点数为 0)或者由一个根结点和两个互不相交的被称为左子树和右子树组成。左子树和右子树分别是一棵二叉树。
满二叉树
一棵高度为 h,且含有
2
h
−
1
2^h - 1
2h−1个结点的二叉树,每一层都是满结点,且二叉树的叶结点都集中在最下一层。
对于满二叉树自上到下,自左到右编号
假设当前结点是 i,双亲是
⌊
i
2
⌋
\lfloor\frac{i}{2}\rfloor
⌊2i⌋, 左孩子
2
∗
i
2*i
2∗i, 右孩子为
2
∗
i
+
1
2 * i + 1
2∗i+1
完全二叉树
把二叉树自上向下,自左到右编号,和满二叉树一致
假设当前编号为 i,分支结点满足:
i
≤
⌊
n
2
⌋
i \leq \lfloor \frac{n}{2}\rfloor
i≤⌊2n⌋
叶子结点只能在最下面两层出现,且依次排列在最左边
如果有度为 1 的点,那么最多有一个,且该点有左孩子没有右孩子
若结点个数 n 为奇数,则每个分支结点都有左孩子和右孩子,否则,编号为
n
2
\frac{n}{2}
2n的孩子 只有左孩子,没有右孩子
二叉树的性质
1.非空二叉树的叶结点数等于度为 2 的结点数加 1,即
n
0
=
n
2
+
1
n_0 = n_2 + 1
n0=n2+1
pro:
{
n
=
2
∗
n
2
+
n
1
+
1
n
=
n
0
+
n
1
+
n
2
\begin{cases} n = 2 * n_2 + n_ 1 + 1 \\ n = n_0 + n_1 + n_2\end{cases}
{n=2∗n2+n1+1n=n0+n1+n2 解方程得
n
0
=
n
2
+
1
n_0 = n_2 + 1
n0=n2+1
2.非空二叉树上第 k 层至多有 2 k − 1 2^{k - 1} 2k−1个结点
3.高度为 h 的二叉树至多有 2 h − 1 2^h - 1 2h−1个结点,等比数列求和
4.对于二叉树某个结点编号为 i
(
i
≥
1
)
(i \geq 1)
(i≥1)的树,它的双亲为
⌊
i
2
⌋
\lfloor \frac{i}{2} \rfloor
⌊2i⌋,如果 i 是偶数,它是左孩子,如果是奇数,它是右孩子.
5.对于结点为 i 的结点,它的深度为
⌊
l
o
g
2
i
⌋
+
1
\lfloor log_{2}^{i}\rfloor + 1
⌊log2i⌋+1
6.具有 n 个结点的完全二叉树的高度为
⌈
log
2
n
+
1
⌉
或
⌊
log
2
n
⌋
+
1
\lceil\log_2^{n + 1}\rceil 或 \lfloor \log_2^n\rfloor + 1
⌈log2n+1⌉或⌊log2n⌋+1
pro:根据性质 3,
n
<
=
2
h
−
1
n <= 2^h - 1
n<=2h−1或 完全二叉树的定义
n
<
2
h
n < 2^h
n<2h解方程得到