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

数据结构基础:树的概念与结构详解

讲解数据结构中的树形结构。树是一种非线性表,由节点组成层次关系集合。核心术语包括根、父节点、子节点、度、深度及路径等。树的存储常用孩子兄弟表示法,通过左孩子右兄弟指针实现。实际应用中如文件系统即典型树形结构。掌握这些概念是学习二叉树及后续算法的基础。

岁月神偷发布于 2026/3/15更新于 2026/6/2727 浏览
数据结构基础:树的概念与结构详解

数据结构基础:树的概念与结构详解

在学习二叉树之前,我们需要先理解什么是树。树是一种非线性的数据结构,与前面学过的线性表不同,它由 n(n>=0) 个有限节点组成一个具有层次关系的集合。

一、树的相关概念

提到树,我们很容易联想到生活中的植物。虽然形态相似,但数据结构中的树是倒挂的——根朝上,叶子朝下。

文章配图

1. 树的概念与结构

树形结构具有以下核心特征:

  • 根节点:有一个特殊的节点称为根节点,它没有前驱节点。
  • 子树划分:除了根节点之外,剩下的其他节点被分成 M(M>0) 个互不相交的集合 T1, T2, ..., Tm。每个集合 Ti 本身又是一颗结构与树类似的子树。
  • 递归定义:每棵子树的根节点有且只有一个前驱(父节点),可以有 0 个或多个后驱(子节点)。

注意:在树形结构中,子树不能有交集。如果相交了,那就变成了图,不再是树。

此外,除根节点外,其他节点有且仅有一个父节点;一颗 N 节点的树必然有 N-1 条边。

2. 树的相关术语

结合下图来理解这些术语:

文章配图

  • 父节点/双亲节点:若一个节点含有子节点,则该节点为子节点的父节点。例如 A 是 B 的父节点。
  • 子节点/孩子节点:一个结点含有的子树的根节点称为该节点的子结点。例如 B 是 A 的子结点。
  • 结点的度:一个结点有几个孩子,其度就是多少。如 A 的度是 6,F 的度是 2。
  • 树的度:一棵树中最大结点的度称为树的度。上图树的度为 6。
  • 叶子结点/终端结点:度为 0 的结点称为叶结点,如 B、C、H、I 等。
  • 分支结点/非终端结点:度不为 0 的结点,如 D、E、F、G 等。
  • 兄弟结点:具有相同父结点的结点互相称为兄弟结点。如 B、C 是兄弟结点。
  • 结点的层次:从根开始定义,根为第 1 层,根的子结点是第 2 层,以此类推。
  • 树的高度或者深度:树中结点的最大层次。上图树的高度为 4。
  • 结点的祖先:从根到该结点所经分支上的所有结点。如 A 是所有节点的祖先。
  • 路径:一条从树任意结点出发,沿父结点 - 子结点连接,达到任意结点的序列。例如 A 到 Q 的路径为 A-E-J-Q。
  • 子孙:以某个结点为根的子树中任一结点都称为该节点的子孙。
  • 森林:由 m(m>0) 棵互补相交的树的集合称为森林。

3. 树的表示方法

树结构相对线性表比较复杂,既要存储值域,也要保存结点和结点之间的关系。实际中树有很多种表示方式,如双亲表示法、孩子表示法、孩子双亲表示法以及孩子兄弟表示法等。

在这些方法中,我们通常选择孩子兄弟表示法。这种方法将多叉树转换为二叉树的形式,便于理解和实现。

下面是树的结构体定义:

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

怎么理解这个结构体呢?我们可以将其看作是每个节点只保留了两个指针:一个指向自己的第一个孩子,另一个指向自己的下一个兄弟。

文章配图

我们以这个图为例,那么这棵树在结构体中的具象化就应该是这样子的:

文章配图

4. 树形结构在生活中的具体应用

树形结构在生活中有许多应用,最简单的例子就是电脑上的文件管理器。文件管理都是一层一层向下管理的,典型的层级关系。

文章配图

文章配图

目录

  1. 数据结构基础:树的概念与结构详解
  2. 一、树的相关概念
  3. 1. 树的概念与结构
  4. 2. 树的相关术语
  5. 3. 树的表示方法
  6. 4. 树形结构在生活中的具体应用
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Ubuntu 虚拟机部署 OpenClaw 个人 AI 助手
  • Docker 重新打包 MySQL5.7 镜像并定制配置
  • 鸿蒙端云一体化开发实战:云对象与云数据库应用
  • 数据结构:八种常见排序算法详解
  • MCP 实现 Figma 设计稿到前端代码的自动化转换
  • ROS 2 Humble 环境下宇树 Unitree 机器人 (Go2/B2/H1) 部署指南
  • 鸿蒙原子化服务与元服务卡片开发指南
  • 鸿蒙应用性能优化与原生合规实践
  • Vue+Node.js+ElementUI 学生创新项目管理系统架构与实现
  • 鸿蒙电商购物车全栈项目:用户管理、商品列表与购物车实战
  • Linux 网络基础:局域网通信与跨网段传输详解
  • 鸿蒙电商购物车全栈实战:用户管理、商品列表与购物车实现
  • 鸿蒙电商购物车全栈项目:用户管理、商品列表与购物车实现
  • 鸿蒙超级终端多设备协同开发指南
  • 浏览器缓存机制详解:如何彻底解决前端代码更新后的缓存问题
  • 鸿蒙应用开发:仿微博文本折叠功能实现
  • macOS 本地部署 OpenClaw 智能体框架指南
  • 鸿蒙车载互联实战:用分布式技术重构出行体验
  • C++ 红黑树进阶:手撕 STL 源码实现 map 和 set
  • 红黑树进阶:手撕 STL 源码封装 RB-tree 实现 map 和 set

相关免费在线工具

  • 加密/解密文本

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