一、树和二叉树
1. 树及二叉树的定义
1)树的定义
- 基本定义:树是n(n⩾0)个结点的有限集合。当n=0时称为空树。
- 递归特性:在任一非空树中,有且仅有一个根结点;其余结点可分为m(m⩾0)个互不相交的有限集T1,T2,...,Tm,每个子集本身又是一棵树(子树)。
- 示例说明:如图中A为根结点,其子树包含BEF、C、DG三部分,其中BEF子树的根是B,DG子树的根是D,形成递归结构。
2)树的相关概念
- 结点关系:
- 双亲/孩子:A是B的双亲结点,B是A的孩子结点
- 兄弟结点:同双亲的结点(如B、C、D互为兄弟)
- 度的定义:
- 结点度:子树的个数(如A的度为3,B的度为2)
- 叶子结点:度为0的结点(如E、F、C、G)
- 内部结点:非根非叶结点(如B、D)
- 层次结构:
- 层次划分:根为第1层,孩子结点逐层递增(如图中最大层次为3)
- 树的高度:最大层次数决定树高
- 特殊分类:
- 有序树:子树顺序不可交换(需明确左右)
- 森林:m(m⩾0)棵互不相交树的集合
3)二叉树的定义
- 核心特征:
- 结点限制:每个结点最多两棵子树(左/右子树)
- 严格区分:必须明确子树为左或右,即使只有一棵子树
- 递归定义:二叉树是n(n⩾0)个结点的有限集合,或是空树,或由根结点+两棵不相交的二叉树(左/右子树)组成
4)树和二叉树的区别
- 子树区分:
- 二叉树必须区分左右子树(如单子树需标注左/右)
- 普通树不要求子树顺序
- 度数限制:
- 二叉树结点最大度为2(0/1/2个子树)
- 普通树结点度数无限制(如图中A的度为3)
- 结构差异:二叉树是特殊的有序树,但有序树不一定是二叉树
2. 二叉树的性质
1)二叉树第i层上至多有2^i-1个节点
- 推导过程:通过满二叉树的实例演示,第一层1个节点(2^{1-1}),第二层2个(2^{2-1}),第三层4个(2^{3-1}),归纳得出第i层最多有2^{i-1}个节点。
- 应用技巧:遇到具体层数计算时,可通过简单层数推导验证公式,如第七层最多有2^6=64个节点。
- 注意点:层数编号从1开始,根节点位于第一层。
2)深度为k的二叉树至多有2^k-1个结点
- 数学推导:将各层最大节点数求和,形成等比数列S=1+2+4+...+2^{k-1},使用求和公式
得出2^k-1。
- 实例验证:深度为3的满二叉树节点数为1+2+4=7,与2^3-1=7一致。
- 特殊说明:深度k≥1,空树(k=0)不符合此性质。
3)终端结点与度为2结点的关系
- 术语说明:
- 终端结点(n0):度数为0的叶子节点
- 度2结点(n2):有两个子节点的中间节点
- 双重证明:
- 节点总数n=n0+n1+n2
- 从分支角度:n-1=2n_2+n_1(每个节点有且只有一个父节点)
- 最终关系:联立方程消元后得到n0=n2+1
- 记忆技巧:每增加一个度2节点就会"产生"一个新的叶子节点
3. 满二叉树和完全二叉树
1)满二叉树的定义
- 核心特征:深度为k的二叉树恰好包含2^k-1
个节点,所有层都达到最大节点数。 - 示例说明:深度3的满二叉树必有7个节点(1+2+4),不存在任何空缺位置。
- 性质关联:是性质1.2中"最多节点"情况的特例。
2)完全二叉树
- 编号规则:节点按层序编号(从上到下,从左到右)必须与同深度满二叉树的编号连续对应。
- 判断要点:
- 除最后一层外,其他层必须全满
- 最后一层节点必须从左向右连续排列
- 反例说明:若中间出现编号空缺(如缺少左子节点但有右子节点)则不是完全二叉树。
- 实际应用:常用于实现堆数据结构。
二、知识小结
|--------|--------------------------------------------------------------------------|-------------------------------|-------|
| 知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
| 树的基本定义 | n个结点的有限集合,n≥0(空树),非空树有且仅有一个根结点,其余结点分为m个互不相交的子树 | 空树概念、根结点唯一性、子树互不相交特性 | ⭐⭐ |
| 树的相关概念 | 双亲/孩子/兄弟结点、结点的度(子树个数)、叶子结点(度=0)、内部结点(非终端非根)、层次(根为第1层)、树的高度(最大层数)、有序树/无序树 | 度与层次计算、终端/非终端结点区分、有序树必须保持子树顺序 | ⭐⭐⭐ |
| 二叉树定义 | n≥0的结点集合,空树或由根+两棵不相交的左右子树组成(必须区分左右) | 与普通树的区别:子树不超过2个且必须明确左右 | ⭐⭐ |
| 二叉树性质1 | 第i层最多有2^(i-1)个结点(i≥1) | 计算特定层最大结点数(如第5层最多16个) | ⭐⭐⭐⭐ |
| 二叉树性质2 | 深度为k的树最多有2^k-1个结点(k≥1) | 满二叉树结点总数计算 | ⭐⭐⭐⭐ |
| 二叉树性质3 | 终端结点数n0=度为2的结点数n2+1 | 重要公式推导(通过结点度数关系证明) | ⭐⭐⭐⭐⭐ |
| 满二叉树 | 深度为k且有2^k-1个结点的二叉树(所有层全满) | 与完全二叉树的区别 | ⭐⭐ |
| 完全二叉树 | 结点编号与同深度满二叉树的1~n编号严格对应(仅允许最后一层右侧连续缺失) | 编号连续性判断(如缺中间结点则非完全二叉树) | ⭐⭐⭐⭐ |