数据结构:树的定义及其性质

news2024/9/29 20:16:22

树的定义

树是一种重要的非线性数据结构,树作为一种逻辑结构,同时也是一种分层结构。具有以下两个特点:

1.树的根结点没有前驱,除根结点意外的节点只有一个前驱

2.树中所有结点都可以有0个或多个后继

树结构在多个领域都有广泛应用,如表示文件系统的结构、数据库的索引、层次数据关系等。

具体来说,树是由n(n≥0)个节点组成的有限集合。当n=0时,称为空树;当n>0时,为非空树。在非空树中,有且仅有一个特定的节点被称为根(root),其余节点可分为m(m>0)个互不相交的有限集T1, T2, …, Tm,其中每一个集合本身又是一棵树,并且被称为根的子树(Subtree)。

树的基本术语

  1. 节点(Node):包含一个数据元素及若干指向其子树的分支。在树中,每个节点都代表一个实体,如文件系统中的文件或目录。

  2. 结点的度(Degree of a Node):一个节点拥有的子树数目。例如,一个节点如果有两个子节点,则它的度为2。

  3. 树的度(Degree of a Tree):树中所有节点度的最大值。这表示树中最“繁忙”的节点有多少个直接子节点。

  4. 叶子节点(Leaf Node):度为零的节点,也称为终端节点。在树的最底层,没有子节点的节点都是叶子节点。

  5. 分支节点(Branch Node):度大于零的节点,也称为非终端节点。这些节点在树中起到连接其他节点的作用。

  6. 路径(Path):由从根节点到某一节点所经分支和节点构成的序列。

  7. 路径的长度:是路径上边的数量。

  8. 孩子节点(Child Node):节点的子树的根称为该节点的孩子节点。例如,在文件系统中,一个目录下的文件和子目录都是该目录的孩子节点。

  9. 双亲节点(Parent Node):相应地,一个节点的直接前驱节点称为该节点的双亲节点。在文件系统中,一个目录的上级目录就是该目录的双亲节点。

  10. 兄弟节点(Sibling Node):具有同一父节点的各个节点彼此是兄弟节点。在文件系统中,同一目录下的文件和子目录互为兄弟节点。

  11. 祖先节点(Ancestor Node):从根节点到某一节点路径上的所有节点都是这个节点的祖先节点。在文件系统中,从根目录到某个文件或目录路径上的所有目录都是该文件或目录的祖先节点。

  12. 子孙节点(Descendant Node):以某节点为根的子树中任一节点都称为该节点的子孙节点。在文件系统中,一个目录下的所有文件和子目录(以及子目录的子目录等)都是该目录的子孙节点。

  13. 节点的层次(Level of a Node):从根节点到该节点所经过的路径长度加1。根节点位于第1层。

  14. 树的深度(Depth of a Tree):树中叶子节点具有的最大层次数。这表示从根节点到最远叶子节点的最长路径上的节点数。

  15. 树的宽度(Width of a Tree):整棵树中某一层中最多的节点数。这表示树在该层上的“宽度”。

  16. 有序树(Ordered Tree):如果将树中节点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树。与之相对的是无序树,其中子树的顺序不重要。

树的性质可以从多个方面来阐述,以下是一些主要的性质:

一、基本性质

  1. 递归定义:树是n(n≥0)个节点的有限集合,当n=0时称为空树。在非空树中,有且仅有一个特定的称为根的节点,其余节点可分为m(m>0)个互不相交的有限集合,每个集合本身又是一棵树,并称为根的子树。这种定义是递归的。

  2. 节点关系

    • 根节点没有前驱节点,除根节点外的所有节点有且只有一个前驱节点。
    • 树中所有节点可以有零个或多个后继节点(即子节点)。
  3. 层次结构:树具有层级结构,从根节点开始,根节点为第一层,根节点的子节点为第二层,以此类推。节点的层次从根开始定义,根节点为第1层(有些教材从0开始)。

  4. 路径与路径长度:路径是由树中的两个节点之间的节点序列构成的,而路径长度是路径上所经过的边的个数。

二、节点与树的属性

  1. 节点的度:一个节点拥有的子树数目称为该节点的度。树中节点的最大度数称为树的度。

  2. 叶子节点与分支节点:度为零的节点称为叶子节点(终端节点),度大于零的节点称为分支节点(非终端节点)。

  3. 节点的高度与深度:节点的高度是从该节点到其最远叶子节点的最长路径上的节点数(即从下往上数)。节点的深度是从根节点到该节点的路径长度(即从上往下数)。树的高度(深度)是树中节点的最大层次数。

三、特殊树的性质

  1. 二叉树:二叉树是每个节点最多有两个子树的树结构。二叉树具有一些特殊的性质,如满二叉树、完全二叉树等。

  2. m叉树

  • m叉树是每个节点最多有m个子树的树结构。对于高度为h的m叉树,其节点数至多为(m^h - 1) / (m - 1),至少为h(每层只有一个节点)或h+m-1(只有一个分支节点有m个孩子)。
  • 第i层至多有m^(i-1)个结点。

四、其他性质

  1. 结点数与度数关系:树中的结点数等于所有节点的度数之和加1。这是因为每个非根节点都有一个前驱节点(即其父节点),而根节点没有前驱节点,所以总度数加1就等于结点数。

  2. 有序树与无序树:树中节点的各子树从左到右是有次序的,不能交换,称该树为有序树;否则称为无序树。

  3. 森林:m(m≥0)棵互不相交的树的集合称为森林。森林可以看作是由多棵树组成的集合。

最小高度分析:

度为m,具有n个结点的树的最高度h:

度为m,具有n个结点的树的最高度h:n-m+1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2177726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM相关的命令汇总

一、简介 虽然目前市场上有很多成熟的 JVM 可视化监控分析工具,但是所有的工具其实都依赖于 JDK 的接口和底层相关的命令,了解这些命令的使用对于在紧急情况下排查 JVM 相关的线上故障,会有更加直观的帮助。 下面一起来看看 JVM 常用的命令…

ARM硬件知识补充

一、硬件知识 1.三极管 三极管定义:全称应为半导体三极管,也被称为双极型晶体管或晶体三极管。 主要功能:是将微弱的电信号放大成幅度值较大的电信号,同时也被用作无触点开关。 分类:分为NPN型和PNP型两种类型。 …

GNSS定位中自适应调整电离层延迟参数过程噪声的方法

文章目录 前言一、非差非组合PPP模型二、电离层功率谱密度计算三、具体实现方法3.1 不平滑3.2 三阶多项式平滑 参考文献 前言 GNSS定位中不少技术手段如PPP和长基线RTK需要将电离层延迟作为参数估计,电离层延迟的变化通常被描述为随机游走过程,而功率谱密…

three.js 通过着色器实现热力图效果

three.js 通过着色器实现热力图效果 在线预览 https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idheatmapShader 在 https://threehub.cn 中还有很多案例 <!doctype html> <html lang"en"> <head> <meta charse…

RFID标签的前世今生

一、RFID标签发展历程 1.1 技术突破 RFID标签技术自20世纪90年代兴起以来&#xff0c;经历了多次重要的技术突破&#xff0c;这些突破极大地推动了RFID技术的发展和应用。 标签供电方式的革新&#xff1a;早期的RFID标签主要依赖于电磁感应线圈进行短暂供电&#xff0c;而现…

python中的assert语句

1.什么是assert 程序运行过程中,所有变量的当前值组合构成了“状态“; 每执行一段程序,状态就发生变化;如果程序有逻辑错误的bug,必定在处变量值的组合不符合预期,处于错误状态; 将对变量的预期写为断言,可以定位复杂的逻辑错误。 语法: assert <表达式> [, …

transition在vue2和vue3中的差异

背景&#xff1a; 在学习<transition/> 的时候&#xff0c;发现自己跟着视频抄写的代码&#xff0c;实现效果和示例代码不一致。 代码&#xff1a; <template><div id"app"><button id"btn" click"changeShow">切换…

Cholesky分解

Cholesky 应该怎么念&#xff0c;o(╯□╰)o&#xff0c;我感觉比较像‘瞅乐死骑’&#xff0c;毕竟这是 名字&#xff0c;哈哈哈哈 ATA 这个矩阵非常重要&#xff0c;之前在最小二乘法也见过它&#xff0c;如果&#xff1a; Axb 无解&#xff0c;也就是 xA−1b 不成立&…

随笔:创新的路径

最近&#xff0c;中国工业博览会在上海召开了&#xff0c;许多自动化行业的朋友都去参加这一场中国工业的盛会&#xff0c;兴奋地传来了各种新技术和新产品的消息。总的感觉国产产品集中度很高&#xff0c;长的都差不多。同质化现象比较严重。要实现产品的差异化&#xff0c;唯…

英伟达Blackwell系列显卡揭秘:RTX 5090与RTX 5080引领性能新高度

在万众瞩目的期待中&#xff0c;9月27日传来震撼消息&#xff0c;知名硬件信息揭秘者Kopite7kimi再次出手&#xff0c;独家披露了英伟达即将震撼登场的Blackwell系列显卡中的两款旗舰级产品——GeForce RTX 5090与RTX 5080的详细规格。这一爆料不仅揭示了英伟达新一代显卡的卓越…

企业微信:客户联系自带群发工具和聊天工具

前言 上篇博客介绍了一些客户联系的开启和配置&#xff0c;接下来我们来使用客户联系自带群发工具和聊天工具。 突然发现官方的文档已经很详细了&#xff0c;我这里给出一些简单的描述&#xff1a; 企业微信如何使用群发助手&#xff1f;-帮助中心-企业微信 群发工具 群发消息给…

Clipboard.js实现复制文本到剪贴板功能

一、Clipboard.js简介 Clipboard.js是一个轻量级的实现复制文本到剪贴板功能的JavaScript插件&#xff0c;该插件可以将输入框&#xff0c;文本域&#xff0c;DOM节点元素中的文本内容复制到剪贴板中。 官网地址&#xff1a;Clipboard.js 浏览器兼容性&#xff1a;兼容Chrome、…

第100+26步 ChatGPT学习:概率校准 Bayesian Binning into Quantiles

基于Python 3.9版本演示 一、写在前面 最近看了一篇在Lancet子刊《eClinicalMedicine》上发表的机器学习分类的文章&#xff1a;《Development of a novel dementia risk prediction model in the general population: A large, longitudinal, population-based machine-learn…

Kubernetes从零到精通(16-扩展-CRD、Custom Controller)

目录 一、简介 二、CRD 1.CRD介绍 2.CRD工作流程 三、Custom Controller 1.Custom Controller介绍 2.Custom Controller工作流程 四、示例 1.创建CR 2.配置权限RBAC 3.创建Custom Controller 3.1 Go项目初始化 3.2 main.go编写 3.3 构建镜像 3.4 部署Controller…

BaseCTF2024 个人WP

Pwn&#xff1a; [Week1] 签个到吧&#xff1a; 直接nc&#xff0c;ls&#xff0c;cat flag [Week1] echo&#xff1a; 只能使用echo命令 那就用echo *代替ls输出当前目录所有文件 用echo $(<flag)输出flag [Week1] Ret2text&#xff1a; 简单的栈溢出 from pwn impo…

10分钟,AI如何精准写出社会热点文?一篇爆款文章的背后你敢信?

本文背景 很多小伙伴们反馈&#xff0c;用AI输出的文章经常被平台判定为“疑似AI创作”&#xff0c;一但被判定&#xff0c;系统就不会给推荐流量。 到底在这个充斥着AI的大环境下&#xff0c;应该怎样完成AI文章的写作呢&#xff1f;特别是做流量主项目的小伙伴们&#xff0c;…

golang web笔记-3.响应ResponseWriter

简介 从服务器向客户端返回响应需要使用 ResponseWriter&#xff0c;ResponseWriter是一个接口&#xff0c;handler用它来返回响应。 ResponseWriter常用方法 Write&#xff1a;接收一个byte切片作为参数&#xff0c;然后把它写入到响应的body中。如果Write被调用时&a…

linux conda 安装 配置

linux conda 安装 配置 1. 下载2. 安装3. 配置&#xff08;针对非root用户&#xff0c;当前用户&#xff09; 1. 下载 网址&#xff1a;https://docs.anaconda.com/miniconda/ 下载一个.sh文件 2. 安装 命令&#xff1a;sh Miniconda3-latest-Linux-x86_64.sh 按照提示回车/…

【数据结构】什么是平衡二叉搜索树(AVL树)?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;AVL树的概念 &#x1f4cc;AVL树的操作 &#x1f38f;AVL树的插入操作 ↩️右单旋 ↩️↪️右左双旋 ↪️↩️左右双旋 ↪️左单旋 &#x1f38f;AVL树的删…

利用AI十分钟制作视频,暴涨4.7w粉丝,小白也能月入过万

今天给大家展示的项目是&#xff1a;AI动漫人物封面。 先来看一下教程方的广告&#xff1a; 蓝海赛道、AI翻唱 一周内获得了4.7万个粉丝&#xff0c;小白也可以轻松上手&#xff0c;月入过万手拿把掐。 现在利用AI创作 动漫 IP 翻唱音乐在全网悄然增多&#xff0c;流量也非常…