跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C算法

树与二叉树:核心结构、性质及存储方式详解

树作为非线性数据结构,广泛应用于文件系统与数据库索引。内容涵盖树的定义、节点关系术语(如度、层次、祖先)及孩子兄弟表示法。重点解析二叉树概念、特殊形态(满/完全)、五大性质及其证明逻辑。最后对比顺序存储与链式存储的实现差异,为后续学习平衡树等高级结构奠定基础。

RedisGeek发布于 2026/3/15更新于 2026/6/617 浏览
树与二叉树:核心结构、性质及存储方式详解

请添加图片描述

树与二叉树:核心结构、性质及存储方式详解

在数据结构的学习中,树作为一种非常重要的非线性结构,广泛应用于文件系统、数据库索引和网络路由等场景。本文将系统梳理树与二叉树的基本概念、特性及其存储实现,为后续深入理解平衡树等高级算法打下基础。

一、树的基本概念

树是由 n(n>=0)个有限结点组成的具有层次关系的集合。之所以叫'树',是因为它看起来像一棵倒挂的树,根朝上,叶朝下。

定义:有一个特殊的结点称为根结点,没有前驱;除根结点外,其余结点被分成 M(M>0) 个互不相交的集合 T1、T2……Tm,每个集合本身又是一棵结构与树类似的子树。每棵子树的根有且只有一个前驱,可以有 0 个或多个后继。

因此,树是递归定义的。注意,树形结构中子树之间不能有交集,否则就破坏了树的定义。

在这里插入图片描述

1. 树的相关术语

理解这些术语有助于快速分析树的结构:

  • 结点的度:一个结点含有的子树个数。例如图中 A 的度为 6。
  • 叶结点:度为 0 的结点,如 B、C、H、I 等。
  • 分支结点:度不为 0 的结点,如 D、E、F、G 等。
  • 双亲/孩子:若结点 P 含有子结点 C,则 P 是 C 的双亲,C 是 P 的孩子。
  • 兄弟结点:具有相同父结点的结点互为兄弟。
  • 树的度:树内各结点度的最大值。
  • 层次与深度:从根开始定义,根为第 1 层,最大层次即为树的高度或深度。
  • 祖先与子孙:从根到某结点路径上的所有结点均为其祖先;以某结点为根的子树中任一结点均为其子孙。
  • 森林:由 m(m>0)棵互不相交的树组成的集合。
2. 树的表示

树结构比线性表复杂,既要存值域,又要存关系。常见的表示法有双亲表示法、孩子表示法等。最巧妙的是孩子兄弟表示法,它用二叉树的结构来优雅地表示普通树(多叉树),本质上是将'多叉树'转化为'二叉树'。

typedef int DataType;
struct Node {
    struct Node* firstChild; // 指向第一个孩子结点
    struct Node* ; 
    DataType data; 
};
pNextBrother
// 指向下一个兄弟结点
// 结点数据域

这种表示法的妙处在于,通过 firstChild 和 pNextBrother 两个指针,就能遍历整棵树的所有分支,无需复杂的数组管理。

3. 实际应用

树在实际中最典型的应用就是文件系统的目录树结构,层级分明,便于管理和检索。

二、二叉树的概念与结构

简单理解,二叉树就是每个结点最多只有两个'叉'的树。

1. 基本概念

二叉树是结点的有限集合,满足以下两种情况之一:

  1. 为空集。
  2. 由一个根结点加上两棵分别称为左子树和右子树的二叉树组成。

在这里插入图片描述

关键点:

  • 二叉树不存在度大于 2 的结点。
  • 子树有左右之分,次序不能颠倒,因此是有序树。
2. 现实中的二叉树

二叉树在现实中随处可见,比如决策树模型、表达式树等。

在这里插入图片描述

3. 特殊二叉树
  • 满二叉树:每一层的结点数都达到最大值。若层数为 K,结点总数为 $2^K - 1$。
  • 完全二叉树:效率很高。对于深度为 K 且有 n 个结点的二叉树,当且仅当其每一个结点都与深度为 K 的满二叉树中编号从 1 至 n 的结点一一对应时,称之为完全二叉树。注意,满二叉树是一种特殊的完全二叉树。
4. 性质与证明

掌握这些性质对计算空间复杂度至关重要:

  1. 第 h 层结点数:若规定根结点层数为 1,则第 h 层最多有 $2^{(h-1)}$ 个结点。
  2. 最大结点数:深度为 h 的二叉树最大结点数为 $2^h - 1$。
  3. 叶子与度为 2 的关系:对任何二叉树,若度为 0 的叶结点数为 $n_0$,度为 2 的分支结点数为 $n_2$,则有 $n_0 = n_2 + 1$。
    • 证明思路:可用假设法。单节点时 $n_0=1, n_2=0$ 成立。增加度为 1 的点不改变 $n_0-n_2$ 差值;增加度为 2 的点,$n_0$ 增 1,$n_2$ 增 1,差值仍不变。故恒成立。
  4. 满二叉树深度:具有 n 个结点的满二叉树,深度 $h = \log_2(n+1)$。
  5. 完全二叉树编号规律:若按从上至下、从左至右顺序从 0 开始编号,对序号 i 的结点:
    • 双亲序号:$(i-1)/2$(整数除法,无需分奇偶讨论)。
    • 左孩子序号:$2i+1$(若 $<n$)。
    • 右孩子序号:$2i+2$(若 $<n$)。

在这里插入图片描述

三、二叉树的存储结构

与其他数据结构类似,二叉树主要有两种存储方式。

1. 顺序存储

使用数组存储。一般只适合表示完全二叉树,因为非完全二叉树会有大量空间浪费。实际应用中,堆(Heap)常使用数组存储。二叉树顺序存储在物理上是数组,逻辑上是树。

2. 链式存储

用链表表示二叉树,每个结点包含数据域和左右指针域。

typedef int BTDataType;
// 二叉链
struct BinaryTreeNode {
    struct BinaryTreeNode* left;   // 左孩子
    struct BinaryTreeNode* right;  // 右孩子
    BTDataType data;               // 数据域
};

// 三叉链(带父指针)
struct BinaryTreeNode {
    struct BinaryTreeNode* parent; // 父结点
    struct BinaryTreeNode* left;   // 左孩子
    struct BinaryTreeNode* right;  // 右孩子
    BTDataType data;               // 数据域
};

顺序存储和链式存储各有优劣,具体选择需根据应用场景权衡。后续文章会针对具体实现做更深入的讲解。

四、总结

理解树与二叉树的基本概念是学习 AVL 树、红黑树、B 树等高级结构的基础,也是掌握霍夫曼编码、决策树等算法的前提。建议结合代码实践,加深对这些抽象结构的理解。

目录

  1. 树与二叉树:核心结构、性质及存储方式详解
  2. 一、树的基本概念
  3. 1. 树的相关术语
  4. 2. 树的表示
  5. 3. 实际应用
  6. 二、二叉树的概念与结构
  7. 1. 基本概念
  8. 2. 现实中的二叉树
  9. 3. 特殊二叉树
  10. 4. 性质与证明
  11. 三、二叉树的存储结构
  12. 1. 顺序存储
  13. 2. 链式存储
  14. 四、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 汽车雷达多径幽灵目标检测:GLRT 与稀疏压缩感知解析
  • AI Agent 实战:从零搭建生产级框架与核心实现
  • VSCode GitHub Copilot 配置 OpenAI 兼容自定义模型
  • Whisper-large-v3 实战:金融场景定制术语词表提升财报识别准确率
  • 基于 Spring AI 与 Ollama 的离线私有化 AI 服务构建
  • 数据结构与算法:复杂链表的复制与插入排序
  • 微搭低代码 MBA 培训系统:用户登录与权限控制
  • OpenClaw ACP 协议深度解析:IDE 直接驱动 AI Agent
  • 通过扣子平台部署 OpenClaw 并接入飞书实现 AI 自动化办公
  • LobeChat 与 Stable Diffusion 联动实现 AI 绘画描述生成
  • C++ STL 关联式容器详解:map 与 set 使用
  • 滑动窗口算法实战:串联所有单词与最小覆盖子串
  • 5 个维度掌握 python-okx 库:API 整合与量化交易实战
  • Ψ0 人形全身 VLA:基于人类视频与机器人数据预训练及后训练方案
  • LLaMA Factory 训练可视化管理:Loss 曲线解析与性能优化
  • AIGC 驱动的虚拟人物创作与智能交互技术解析
  • 大模型微调框架 Firefly 与 LLaMA Factory 对比及选型建议
  • GTC 2026 前瞻:Rubin 平台与 AI 工厂建设
  • LLaMA Factory 数据集配置详解
  • Pico 4XVR 1.10.13 安装与使用教程

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online