一、树
1. 树的定义
- 非线性数据结构
- 除根节点外,一个直接前驱,多个直接后继
2. 树的逻辑表示方法
- 树形表示法
3. 树的基本术语
- 结点的度、树的度、m次树
- 分支结点、叶子结点
- 路径、路径长度
- 孩子结点、双亲结点、兄弟节点、子孙结点、祖先结点
- 结点的层次、树的高度(深度)
- 有序树、无序树
- 森林
4. 树的性质
- 4个性质
5. 树的基本运算
- 查找
- 插入或删除
- 遍历
6. 树的存储结构
- 双亲存储结构:用一个数组存储结构体(数据+指向双亲的指针)
- 孩子链存储结构:根据树的度确定指向孩子指针的个数,结构体(数据+指向孩子结点的指针数组)
- 孩子兄弟链存储结构:一个数据元素域、一个指向第一个孩子的指针、一个指向下一个兄弟结点指针域
二、二叉树
1. 二叉树的概念
- 结构简单、存储效率高、运算算法相对简单
- 任何m次树都可以转换为二叉树
- 严格区分左右子树
- 五种基本形态:空、单结点、右为空、左为空、左右不为空
- 满二叉树:完全二叉树的一种特例
- 完全二叉树:最下面一层叶子结点都排列在左边,满二叉树是完成二叉树的一个特例
2. 二叉树的性质
- 4个性质
3. 二叉树与树、森林之间的转换(一一对应)
- 森林、树转二叉树
- 加水平线
- 删连线
- 旋转45度
- 二叉树还原为森林、树
- 删右孩子连线
- 与双亲结点连线
4. 二叉树存储结构
- 顺序存储结构:
- 存储在数组
- 树结点编号,按照编号存储在对应的下标,空分支用#补齐
- 链式存储结构:左子针域、值域、右子针域