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

数据结构初阶:树的概念、术语与表示方法

树作为典型的非线性数据结构,由 n(n>=0) 个节点组成层次关系集合。核心在于理解递归定义、父子节点关系及树的度。常用孩子兄弟表示法将多叉树转化为二叉树存储,便于计算机处理。文件系统等场景是其典型应用,掌握基础术语如深度、高度、路径等是学习二叉树的前提。

Qiny01发布于 2026/3/24更新于 2026/10/24117 浏览
数据结构初阶:树的概念、术语与表示方法

数据结构初阶:树的相关概念

在深入二叉树之前,我们需要先夯实树的基础。线性表处理的是顺序关系,而树结构则引入了层次和分支,这是非线性数据结构的典型代表。

一、树的概念与结构

提到树,大家容易联想到植物。计算机中的树确实借鉴了这种形态,但方向是相反的——根在上,叶在下。

文章配图

定义:树是由 n(n>=0) 个有限节点组成的具有层次关系的集合。当 n=0 时称为空树。

树的核心特性包括:

  • 根节点:没有前驱节点的节点,整棵树的入口。
  • 子树:除根节点外,其余节点被分成 m(m>0) 个互不相交的集合,每个集合本身又是一棵树。
  • 递归性:每棵子树的根节点有且只有一个前驱(父节点),可以有多个后驱(子节点)。

注意:子树之间不能有交集,否则就变成了图结构。

文章配图

此外还有两个重要性质:

  1. 除了根节点,其他节点有且仅有一个父节点。
  2. 一棵 N 节点的树必然有 N-1 条边。

二、树的相关术语

理解术语是掌握树结构的关键。我们结合下图来梳理这些概念:

文章配图

术语说明
父节点/双亲节点若一个节点含有子节点,则该节点为父节点(如 A 是 B 的父节点)。
子节点/孩子节点一个结点含有的子树的根节点称为该节点的子结点(如 B 是 A 的子节点)。
结点的度一个结点拥有的子树数量(如 A 的度为 6)。
树的度树中所有结点的度的最大值。
叶子结点度为 0 的结点,即终端结点。
分支结点度不为 0 的结点,即非终端结点。
兄弟结点具有相同父结点的结点互相称为兄弟。
结点的层次从根开始定义,根为第 1 层,其子结点为第 2 层,以此类推。
树的高度/深度树中结点的最大层次。
路径从任意结点出发沿父子连接到达另一结点的序列。
祖先/子孙从根到某结点路径上的所有结点为其祖先;以某结点为根的子树中任一点为其子孙。
森林由 m(m>0) 棵互不相交的树的集合。

三、树的表示方法

树的结构比线性表复杂,存储时需要同时保存值域和结点间的关系。常见的表示法有双亲表示法、孩子表示法、孩子双亲表示法等。在实际应用中,孩子兄弟表示法最为常用,它巧妙地将多叉树转化为二叉树结构,便于理解和实现。

结构体定义

struct TreeNode {
    struct TreeNode* child;   // 指向第一个孩子结点
    struct TreeNode* brother; // 指向下一个兄弟结点
    int data;                 // 结点中的数据域
};

原理解析

这个结构体只有两个指针,却足以表达复杂的树形关系。child 指向最左边的孩子,brother 指向右边的兄弟。通过这两个指针的链接,原本的多叉树就被'拉直'成了二叉树的形式。

文章配图

对应到具体的内存映射,这棵树的结构化表现如下:

文章配图

四、树形结构的应用

树在生活中无处不在,最直观的例子就是操作系统的文件管理器。文件夹嵌套文件夹,文件挂在文件夹下,本质上就是一层一层向下的树形管理结构。

文章配图

文章配图

掌握了这些基础概念和术语,接下来我们就可以顺利进入二叉树的学习了。

目录

  1. 数据结构初阶:树的相关概念
  2. 一、树的概念与结构
  3. 二、树的相关术语
  4. 三、树的表示方法
  5. 结构体定义
  6. 原理解析
  7. 四、树形结构的应用

更多推荐文章

查看全部
  • Java Web 基础:Spring Web MVC 核心解析
  • Arch Linux 配置 llama.cpp SYCL 后端实现 Intel GPU 加速推理
  • 基于 Web 的汽车销售系统设计与实现
  • 大疆无人机开发实战指南:MSDK/PSDK/上云 API 集成
  • <script> 标签的 defer 与 async 属性区别及执行顺序详解
  • Python 进阶:68 个内置函数的分类图谱与组合实战
  • OpenClaw Skills 深度解析:构建机器人行为模块的实战指南
  • DB-GPT 基于阿里云 GPU 实例的本地化部署指南
  • 日常写 JS 最常用的 10 个 ES6 语法,附避坑和综合练习
  • Qwen3-ASR-1.7B 驱动博物馆 AR 导览:语音转写与知识图谱联动
  • Java 参数验证:@Valid 和 @Validated 的区别与最佳实践
  • 大模型入门教程(二):LLM 的未来演进与安全性
  • 从三年前端到韩国 CS 硕士:一段留学经历的得与失复盘
  • USB PD 协议深度解析:CC 引脚通信与 BMC 编码原理
  • 实战开发 AI Skill:网页内容抓取工具实现
  • Flutter 组件 Spry 适配鸿蒙 HarmonyOS 实战:轻量化端侧 Web 框架
  • 基于 Docker 部署 FRP 实现内网穿透及配置详解
  • 基于 Vue3 和 Python 的大学生租房报修系统设计
  • 2025 AI 问道之旅:个人成长与深度学习理解
  • SWE-CI: 基于持续集成评估智能体在代码库维护中的能力

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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