树
树的介绍
树的定义
基本术语
存储结构
二叉树
一、树(Tree)的基本概念
1. 定义 ---递归式的定义
树是n(n ≥ 0)个结点的有限集合:
当n = 0时,称为空树;
当n > 0时,满足:
有且仅有一个根结点(Root);
其余结点可分为m(m ≥ 0)个互不相交的有限集合 T₁, T₂, ..., Tₘ,
每个集合本身也是一棵树,称为根的子树(Subtree)。
2. 基本术语
| 术语 | 说明 |
|---|---|
| 结点的度(Degree) | 结点拥有的子树个数 |
| 叶结点(Leaf) | 度为 0 的结点,也称终端结点 |
| 分支结点(Internal Node) | 度不为 0 的结点,也称非终端结点 |
| 树的度 | 树中所有结点的度的最大值 |
| 结点的层次(Level) | 根结点为第 1 层,其子结点为第 2 层,依此类推 |
| 树的深度 / 高度(Depth / Height) | 树中结点的最大层次数 |
3. 存储结构
顺序存储:
- 适用于完全二叉树等结构规则的树,常用数组实现;
链式存储:
- 通用方式,每个结点包含数据域和指向子结点的指针域。
二叉树
定义
二叉树是n(n ≥ 0)个结点的有限集合:
- 或为空树(n = 0);
- 或由一个根结点和两棵互不相交的子树组成,分别称为左子树和右子树,且二者有严格顺序。
特点
- 每个结点最多有两个子树;
- 左、右子树有顺序,不可互换;
- 即使某结点仅有一个子树,也必须明确是左子树还是右子树。
特殊二叉树
二叉树的遍历
深度优先
前序遍历
根---左---右
中序遍历
左---根---右
后序遍历
左---右---根
前中后序的组合
总结
深度优先二叉树的相关代码
二叉树序列代码表示方法
前序扩展序列 --- 根 左 右
ABDH##H###CE#I##F##
没有了的部分用#表示
创建二叉树
前序遍历并打印二叉树
中序遍历并打印二叉树
后序遍历并打印二叉树
广度优先
层次遍历
层次遍历具体代码应用---结合队列
具体思路
代码
对应的层次遍历二叉树 . h 文件以及队列的 , h 文件的写法