计算机中级-数据库系统工程师-数据结构-树与二叉树(1)

一、树和二叉树
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编号严格对应(仅允许最后一层右侧连续缺失) | 编号连续性判断(如缺中间结点则非完全二叉树) | ⭐⭐⭐⭐ |

相关推荐
环黄金线HHJX.2 小时前
BaClaw龙虾打字
开发语言·人工智能·算法·编辑器
AI科技星2 小时前
光速螺旋量子几何统一场论:基于四维类时螺旋的物理现象统一推导
开发语言·线性代数·算法·数学建模·平面
We་ct2 小时前
LeetCode 191. 位1的个数:两种解法详解
前端·算法·leetcode·typescript
vx_biyesheji00012 小时前
计算机毕业设计:Python汽车市场智能决策系统 Flask框架 可视化 机器学习 AI 大模型 大数据(建议收藏)✅
大数据·人工智能·python·算法·django·汽车·课程设计
2501_920627612 小时前
Flutter 框架跨平台鸿蒙开发 - 编程代码库应用
学习·算法·flutter·华为·harmonyos
每天回答3个问题2 小时前
掌握常见的容器的用法
算法·深度优先
Dfreedom.2 小时前
神经网络算法全景解析
人工智能·神经网络·算法
kishu_iOS&AI2 小时前
机器学习 —— 浅析
人工智能·算法·机器学习
深邃-2 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·算法