数据结构——树与二叉树
文章目录
树的基本概念
树的定义
见王道书P119
树的性质✅
-
结点数 = 总度数(分支数) + 1,这个 1 是根结点。
-
度为 m 的树 m 叉树 任意结点的度 <= m 任意结点的度 <= m 至少有一个结点度 = m 允许所有结点的度都 < m 一定是非空树,至少有 m + 1 个结点 可以是空树 -
度 为 m 的 树 、 m 叉 树 , 第 i 层 至 多 有 m i − 1 个 结 点 \begin{array}{l} 度为\ m\ 的树、\ m\ 叉树,第\ i\ 层至多有\ {m^{i - 1}}\ 个结点 \end{array} 度为 m 的树、 m 叉树,第 i 层至多有 mi−1 个结点
-
高 度 为 h 的 m 叉 树 、 m 度 树 至 多 有 ( m h − 1 ) ( m − 1 ) 个 结 点 ( 等 比 数 列 求 和 ) \begin{array}{l} 高度为\ h \ 的\ m \ 叉树、m 度树至多有\ \frac{ {({m^h} - 1)}}{ {(m - 1)}}\ 个结点(等比数列求和) \end{array} 高度为 h 的 m 叉树、m度树至多有 (m−1)(mh−1) 个结点(等比数列求和)
-
高 度 为 h 的 度 为 m 的 树 至 少 有 h + m − 1 个 结 点 ( 等 比 数 列 求 和 ) \begin{array}{l} 高度为\ h \ 的度为\ m\ 的树至少有\ h + m - 1 个结点(等比数列求和) \end{array} 高度为 h 的度为 m 的树至少有 h+m−1个结点(等比数列求和)
-
KaTeX parse error: Undefined control sequence: \ at position 43: …点的\ m\ 叉树的最小高度为\̲ ̲\left\lceil { { {…
二叉树(BinaryTree)
二叉树的定义和主要特性
注意以上都是向下取整
二叉树的性质✅
KaTeX parse error: Unknown column alignment: * at position 789: …{\begin{array}{*̲{20}{c}} { {n_0}…
二叉树的存储结构和基本操作
顺序存储
满二叉树和完全二叉树可以采用顺序存储:
同“串”一样,我们从下标 1 开始存储,方便对应。
#define MaxSize 255
ElemType data[MaxSize];
基本操作
使 用 顺 序 存 储 的 二 叉 树 , 有 以 下 性 质 : 结 点 i 的 左 孩 子 — — 2 i 结 点 i 的 右 孩 子 — — 2 i + 1 结 点 i 的 父 结 点 — — ⌊ i / 2 ⌋ 结 点 i 所 在 层 — — ⌈ log 2 ( i + 1 ) ⌉ = ⌊ log 2 i ⌋ + 1 判 断 结 点 i 是 否 有 左 孩 子 — — 2 i < = n ? 判 断 结 点 i 是 否 有 右 孩 子 — — 2 i + 1 < = n ? 判 断 结 点 i 是 否 是 叶 子 / 分 支 结 点 — — i > ⌊ n / 2 ⌋ ? \begin{array}{l} 使用顺序存储的二叉树,有以下性质:\\ 结点\ i\ 的左孩子——2i\\ 结点\ i\ 的右孩子——2i+1\\ 结点\ i\ 的父结点——\left\lfloor {i/2} \right\rfloor\\ 结点\ i\ 所在层——\left\lceil { { {\log }_2}(i + 1)} \right\rceil = \left\lfloor { { {\log }_2}i} \right\rfloor + 1\\ 判断结点\ i\ 是否有左孩子——2i<=n?\\ 判断结点\ i\ 是否有右孩子——2i+1<=n?\\判断结点\ i\ 是否是叶子/分支结点——i>\left\lfloor {n/2} \right\rfloor?\\ \end{array} 使用顺序存储的二叉树,有以下性质:结点 i 的左孩子——2i结点 i 的右孩子——2i+1结点 i 的父结点——⌊i/2⌋结点 i 所在层——⌈log2(i+1)⌉=⌊log2i⌋+1判断结点 i 是否有左孩子——2i<=n?判断结点 i 是否有右孩子——2i+1<=n?判断结点 i 是否是叶