【数据结构】树的基本概念 | 入门树以及二叉树必熟知

news2024/9/30 1:39:30

的学习过程中,二叉树比较重要,但是在学习二叉树之前,得先需要了解到一些数的概念。

树的定义

是一种非线性的数据结构,它是由 n(n >= 0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像是一棵倒挂的树,也就是说,就是一个根朝上,叶朝下的数。

树的性质

有一个特殊的结点,称为根结点,根结点没有前驱结点

除根结点外,其余结点被分成M个互不相交的集合T1、T2、......、Tm,其中每一个集合Ti(1 <= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱可以有0个或多个后继

树是递归定义

  • 任何一棵树,都可以被拆成一个根和n(n >= 0)棵子树组成。所以树一定会被归类为递归问题解决。那树的递归问题的返回条件就是,当遇到叶子的时候没有子树了,那么就开始返回。

那么什么是非线性的呢?

  • 简单点来说就是非线性就是逻辑结构上不是线性的,在逻辑结构上不是一个挨着一个,逻辑结构上就是一个倒挂的树。

我们首先要清楚的是数据元素间的相互关系具体应包括3个方面:

  • 数据的逻辑结构;
  • 数据的存储结构;
  • 数据的运算集合。

逻辑结构和物理结构:

  • 逻辑结构就是我们想象出来的;
  • 物理结构是在内存中实在存储结构

而在之前我们所学习的线性表、栈、对、字符串、数组以及广义表都属于线性结构。

这里我们注意一下,数组型结构物理结构与逻辑结构是一致的,在逻辑结构中数组存储是连续的,在物理结构中也是连续的。

但是链表就与数组不同。我们在平时画图的过程中,链表中具有箭头并且每个箭头指向下一个,依次往后,但是在实践中,可能并不是如此的。这些结构都是来自堆上面的。线性表在逻辑结构是连续的,通过每一个箭头,上一个指向下一个,但是在实际过程中并没有箭头,就是上一个存储下一个的地址。

树的相关概念

  • 链表中的节点都是有一个或者固定的指针,例如指向下一个节点的指针
  • 双向链表中,就是有指向前驱指针以及指向后继指针
  • 而在一个节点则是会有很多的指针,指向孩子们。

结点的度

结点的度:一个节点含有的子树的个数称为该结点的度;如A节点的度为6,B节点的度为0。

叶节点或终端结点

叶节点或终端结点:度为0的节点称为叶节点;如上图P/Q/H/I/B/C...等都为叶节点。 

非终端节点或分支节点

非终端节点或分支节点:度不为0的结点;如上图D/E/F/G/J都为非终端节点。

所以一个数可以看做是根、分支节点和叶节点的组合。

双亲节点或父节点

双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;如上图:A是B的父节点。

孩子节点或子节点

孩子节点或子节点:一个节点含有子树的根结点则称为该结点的子节点;如上图:B是A的孩子节点。

一个节点可能即是父节点又是子节点。

在这里,有些地方会叫做“双亲节点”。这里并不是有两个父节点,它仍然只有一个父亲,而是为了歧义译为“父母双亲”。

兄弟节点

兄弟节点:具有相同父节点的结点互称为兄弟节点;如上图:B、C是兄弟节点(亲兄弟)。

树的度

树的度:一棵树中,每个结点有个度,最大节点的度称为树的度;如上图:树的度为6。

树的层次

树的层次:从根开始定义起,根为第一层,根的子节点为第2层,以此类推;

树的高度或深度

树的高度或深度:树中节点的最大层次;如上图:层次为4;

数组的下标是从0开始的。

那么高度和深度是从0开始还是1开始?

  • 树的层次,并没有细致的规定,但是建议使用从1开始。

数组下标为什么从0开始呢?

  • 为了方便计算,a[ i ]等价于*( a + i )。

数组与指针的关系是什么?

  • 数组名是首元素的地址。a[ i ]等价于*( a + i ) 。

那么为什么树建议从1开始而不是从0开始呢?

堂兄弟节点

堂兄弟节点:双亲在同一层的节点互为堂兄弟;如上图:H、I互为兄弟节点。

节点的祖先

节点的祖先:从根到该节点所经分支上的所有节点;如上图:A是所有节点的祖先。

子孙

子孙:以某节点为根的子树中任一节点都称为该节点的子孙。如上图:所有节点都是A的子孙。

森林

森林:有m ( m > 0 ) 棵互不相交的树的集合称为森林;(在以后学习的并查集就是属于森林)。

树,简而言之就是数的概念+人类亲缘关系而进行描述的。

树与非树

树注意:

  • 子树之间不能相交的;
  • 除了根节点外,每个结点有且只有一个父节点;
  • 一棵N个结点的树有N-1条边。

树形结构中,子树之间是不能有交集的,否则就不是树形结构。

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

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

相关文章

兼顾陪读|自由职业者赴美国加州大学尔湾分校访学

I老师出国访学除了提升自己的科研水平外&#xff0c;主要目标还是以陪伴孩子上学为主。最终我们为其落实了排名还不错的加州大学尔湾分校的职位&#xff0c;这对于已多年脱离科研工作岗位&#xff0c;学术背景非常薄弱的I老师来说相当不易。 I老师背景&#xff1a; 申请类型&a…

需求分析BSA法

&#x1f449;BSA法&#xff08;Basic–Satisfier–Attractor&#xff09;是对客户需求进行优先级划分的需求分析方法。该模型体现了需求满足度和客户满意度之间的非线性关系。BSA法将客户需求分为3种类型&#xff0c;分别是基本型需求、满意型需求和兴奋型需求。下面将对每种需…

php一句话木马免杀

php一句话木马免杀 针对于php一句话木马做免杀&#xff1a; 利用php动态函数的特性&#xff0c;将危险函数拆分成字符&#xff0c;最终使用字符串拼接的方式&#xff0c;然后重新拼接&#xff0c;后加括号执行代码&#xff0c;并且可以使用花指令进行包装&#xff0c;如无限i…

2023“亚太杯”大学生数学建模竞赛

2023亚太杯数学建模C题 中国新能源电动汽车的发展趋势 解题思路、数据 该题并没有提供数据集&#xff0c;对所需数据进行收集整理是对题目进行求解的基础。在本题中&#xff0c;主要需要以下数据&#xff1a;新能源汽车历史销售量、新能汽车相关专利的历史数量、充电桩历史数…

Docker 安装 Apache

目录 拉取官方 Apache 镜像 查看本地镜像 列出正在运行的容器 运行 Apache 容器 创建一个 HTML 文件&#xff1a;index.html 访问 Apache 拉取官方 Apache 镜像 查找 Docker Hub 上的 httpd 镜像。 可以通过 Tags 查看其他版本的 httpd&#xff0c;默认是最新版本 httpd…

VUE项目部署过程中遇到的错误:POST http://124.60.11.183:9090/test/login 405 (Not Allowed)

我当初报了这个405错误&#xff0c;再网上查了半天&#xff0c;他们都说什么是nginx部署不支持post访问静态资源。 但后面我发现我是因为另一个原因才导致的无法访问。 我再vue中有使用devServer:{ proxy:{} }进行路由转发。 但是&#xff01;&#xff01; 在这个配置只…

「邀请函」开启“全”方位软件授权创新之旅

尊敬的各位创新者&#xff1a; 随着数字化时代的到来&#xff0c;软件授权license已成为了企业开拓市场、提升竞争力的关键环节。为了满足不断变化的市场需求也为了引领行业的创新与变革&#xff0c;我们带着2023年软件授权“全”面、“全”新的方案来了&#xff01;

【云原生 Prometheus篇】Prometheus的动态服务发现机制与认证配置

目录 一、Prometheus服务发现的方式1.1 基于文件的服务发现1.2 基于consul的服务发现1.3 基于 Kubernetes API 的服务发现1.3.1 简介1.3.2 基于Kurbernetes发现机制的部分配置参数 二、实例一&#xff1a;部署基于文件的服务发现2.1 创建用于服务发现的文件2.2 修改Prometheus的…

揭开病毒式内容的秘密:爆炸性在线增长的策略

介绍 病毒式内容的想法已经完全接管了巨大的互联网上的数字世界。我们都看过&#xff1a;那些吸引数百万人注意力的电影、文章或图片似乎像野火一样蔓延开来。然而&#xff0c;是什么导致内容传播开来&#xff1f;公司和个人如何发现互联网快速扩张的关键&#xff1f;在这篇文…

Java中的字符串String

目录 一、常用方法 1、字符串构造 2、String对象的比较 &#xff08;1&#xff09;、equals方法 &#xff08;2&#xff09;、compareTo方法 &#xff08;3&#xff09;、compareToIgnoreCase方法&#xff08;忽略大小写进行比较&#xff09; 3、字符串查找 4、转化 &…

云端导览,数字互动 | 拓世法宝AI数字人一体机助力全新旅游时代

《中国旅行消费趋势洞察白皮书&#xff08;2023版&#xff09;》显示&#xff0c;消费者旅行习惯已从“到此一游”变为“深度在地”&#xff0c;更强调在旅游中充实自我、学习新知识。 &#xff08;《中国旅行消费趋势洞察白皮书&#xff08;2023版》截图&#xff09; 从这些资…

从入门到精通!Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师!

Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师&#xff01; 个人简介什么是数据分析如何自学数据分析书籍推荐作译者简介作者简介译者简介 主要变动导读视频&#xff1a;购书链接&#xff1a;参与方式往期赠书回顾 个人简介 &#x1f3d8;️&…

RTS 客户端-服务器网络

Stone Monarch 从一开始就支持多人游戏&#xff0c;但随着时间的推移&#xff0c;网络模型经历了多次迭代。我最初基于这篇著名的帝国时代文章实现了点对点锁步模型。 点对点锁定步骤有一些众所周知的问题。点对点方面使玩家很难相互连接&#xff0c;并增加了每个新玩家的网络…

2024年跨境电商黄金赛道预测来了!跨境电商首选平台和品类有哪些?

跨境电商作为外贸新常态&#xff0c;在2023年已逐渐进入稳定增长的发展阶段&#xff0c;想必2024年跨境电商也会是一个向好的发展趋势&#xff0c;2024年做跨境电商&#xff0c;找准适合自己的电商平台和产品是成功的关键&#xff0c;今天东哥就对2024年的跨境电商黄金赛道做一…

【OpenAI】经营权争夺战关系图

《OpenAI新模型曝重大飞跃&#xff1a;AGI雏形或威胁人类&#xff0c;也成Altman被解雇导火索&#xff01;》摘要如下: [一句话总结] OpenAI的Q*项目取得突破&#xff0c;解决了以前未见过的数学问题&#xff0c;为AI发展带来重要的技术里程碑。 [文章概览要点] OpenAI内部研…

小程序逆向工具 | 3秒抓取微信小程序源码

目录 一、工具准备 二、解密小程序 1、找到小程序包 2、解密小程序包 三、反编译小程序 1、安装依赖 2、执行反编译 四、完成 想成为一名微信小程序的开发者&#xff0c;前端思路的学习和安全意识是非常有必要的&#xff0c;故务必掌握小程序反编译技能。 这里用到了2…

【Java】用Java库中自带的阻塞队列以及用阻塞队列实现生产者-消费者模型

1、阻塞队列(BlockingDeque) 首先我们来认识一下什么是堵塞队列 阻塞队列即实现了线程安全和阻塞的队列。在队列为空时&#xff0c;获取元素的线程会等待队列存放元素变为非空&#xff1b;在队列满时&#xff0c;存放元素的线程会等待队列取出元素变为不满。 阻塞队列常应用于生…

微信小程序实现类似Vue中的computed、watch功能

微信小程序实现类似Vue中的computed、watch功能 构建npm使用 构建npm 创建包管理器 进入小程序后&#xff0c;打开终端&#xff0c;点击顶部“视图” - “终端” 新建终端 使用 npm init -y初始化包管理器&#xff0c;生成一个package.json文件 安装 npm 包 npm install --…

【nlp】3.2 Transformer论文复现:1. 输入部分(文本嵌入层和位置编码器)

Transformer论文复现:输入部分(文本嵌入层和位置编码器) 1 输入复现1.1 文本嵌入层1.1.1 文本嵌入层的作用1.1.2 文本嵌入层的代码实现1.1.3 文本嵌入层中的注意事项1.2 位置编码器1.2.1 位置编码器的作用1.2.2 位置编码器的代码实现1.2.3 位置编码器中的注意事项1 输入复现…

加班做报表被嘲低效!快用大数据分析工具

做数据分析报表很耗时间&#xff0c;因为不仅要解决多业务系统数据质量标准不一问题&#xff0c;还需要进行大量的公式计算、报表设计与制作。但那是以前&#xff0c;在大数据分析工具强势崛起的当下&#xff0c;这些工作都能交给大数据分析工具来做了。以前是花90%的时间做报表…