数据结构--树的定义与基本术语

news2024/11/25 8:20:43

数据结构–树的定义与基本术语

数的基本概念

树:从树根生长,逐级分支

非空树 \color{purple}非空树 非空树的特性:
有且仅有一个根节点
没有后继的结点称为“叶子结点”(或终端结点)
有后继的结点称为“分支结点”(或非终端结点)
除了根节点外,任何一个结点都有且仅有一个前驱
每个结点可以有0个或多个后继。

除了根节点外,任何一个结点都有且仅有一个前驱 \color{green}除了根节点外,任何一个结点都有且仅有一个前驱 除了根节点外,任何一个结点都有且仅有一个前驱

树的数学定义
树是n (n>0)个结点的有限集合,n=0 时,称为空树,这是一种特殊情况。在任意一棵非空树中应满足:

  1. 有且仅有一个特定的称为 根 \color{red}根 的结点。
  2. 当n >1时,其余结点可分为 m (m>0) 个 互不相交的有限集合 \color{red}互不相交的有限集合 互不相交的有限集合 T 1 , T 2 , . . . , T m T_1, T_2,... , T_m T1,T2,...,Tm,其中每个集合本身又是一棵树,并且称为根结点的 子树 \color{red}子树 子树

树是一种递归定义的数据结构 \color{green}树是一种递归定义的数据结构 树是一种递归定义的数据结构

树形逻辑结构的应用

结点之间的关系描述

祖先结点:

在树结构中,一个节点的祖先节点是指其在树中的上层节点,沿着树的路径从根节点到该节点的所有节点都是它的祖先节点。换句话说,一个节点的祖先节点包括其父节点、爷爷节点、曾祖父节点等等,一直追溯到树的根节点。

子孙结点:

在树结构中,一个节点的子孙节点是指其在树中的下层节点,沿着树的路径从该节点到叶子节点的所有节点都是它的子孙节点。换句话说,一个节点的子孙节点包括其子节点、孙子节点、曾孙节点等等,一直追溯到树的叶子节点。

双亲结点:

双亲结点是指在树或者图中,某个节点的直接前驱节点。在树中,每个节点除了根节点外,都有一个直接前驱节点,称为双亲结点。双亲结点是通过指向该节点的指针或引用来访问的。

孩子结点:

孩子结点是指在树或者图中,某个节点的直接后继节点。在树中,每个节点可以有零个或多个孩子结点。孩子结点是通过被该节点指针或引用所指向的节点来访问的。一个节点的孩子结点可以是多个,但是孩子结点只有一个双亲结点。

兄弟结点:

兄弟结点是指在树或者图中,具有相同双亲结点的节点之间的关系。换句话说,兄弟节点是指具有相同父节点的节点。兄弟节点之间没有直接的连接,它们是通过共同的双亲结点来关联的。在树结构中,兄弟节点是在同一层级上的节点。兄弟节点之间的顺序通常是由它们在父节点中的位置确定的。

堂兄弟结点:

堂兄弟节点是指在家族关系树中,具有相同祖父节点但是双亲结点不同的节点之间的关系。换句话说,堂兄弟节点是指在同一代中,双亲是兄弟姐妹的节点。堂兄弟节点之间没有直接的连接,它们是通过共同的祖父节点来关联的。堂兄弟节点之间的关系比较远,亲缘关系相对较弱。

两个结点之间的路径

在树中,两个节点之间的距离是指从一个节点到达另一个节点所经过的边的数量

只能从上往下 \color{red}只能从上往下 只能从上往下

什么是路径长度

在树中,路径长度是指从一个节点到达另一个节点所经过的边的个数

结点、树的属性描述

属性:
结点的层次(深度)―一从上往下数
默认从 1 开始 \color{red}默认从1开始 默认从1开始
结点的高度――从下往上数
树的高度(深度)―—总共多少层
结点的度 \color{red}结点的度 结点的度――有几个孩子(分支)
树的度 \color{red}树的度 树的度—―各结点的度的最大值

有序树v.S无序树

有序树――逻辑上看,树中结点的各子树从左至右是 有次序 \color{red}有次序 有次序的,不能互换

无序树――逻辑上看,树中结点的各子树从左至右是$\color{red}无次序$的,可以互换

具体看你用树存什么,是否需要用结点的左右位置反映某些逻辑关系 \color{green}具体看你用树存什么,是否需要用结点的左右位置反映某些逻辑关系 具体看你用树存什么,是否需要用结点的左右位置反映某些逻辑关系

树v.S森林

森林。森林是m (m≥0)棵互不相交的树的集合

m 可为 0 空森林 \color{green}m可为0空森林 m可为0空森林

Eg:全中国所有人家的家谱

知识点回顾与重要考点

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

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

相关文章

4.Squid代理服务器应用

文章目录 Squid代理服务器应用代理服务器代理的工作机制代理服务器的概念代理服务器的作用 Squid代理服务器作用Squid代理的类型 部署Squid安装Squidsystemctl创建squid系统运行构建传统代理服务器构建透明代理服务器Squid部署反向代理服务器 ACL访问控制Sarg图形化日志 Squid代…

11个每个Web开发人员都应该拥有的VS Code扩展

微信搜索 【大迁世界】, 我会第一时间和你分享前端行业趋势,学习途径等等。 本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 快来免费体验ChatGpt plus版本的,我们出的钱 体验地…

机器学习算法基础学习 # 集成学习之随机森林

随机森林(Random Forests) 是集成学习算法的一种。集成学习是通过组合多个学习器来完成学习任务。随机森林是结合多颗决策树来对样本进行训练和预测。随机森林通过随机扰动而令所有的树去相关。 随机森林可以使用巨量的预测器,甚至预测器的数量比观察样本的数量还多…

Matlab绘图系列教程-Matlab 34 种绘图函数示例(上)

Matlab绘图系列教程:揭秘高质量科学图表的绘制与优化 文章目录 Matlab绘图系列教程:揭秘高质量科学图表的绘制与优化第一部分:入门指南1.1 简介关于本教程的目的与范围Matlab绘图在科学研究中的重要性 1.2 准备工作安装Matlab及其工具箱 1.3 …

干货 | 石化产品机器学习价格模型开发和SEI石化产品价格分析体系构建

以下内容整理自大数据能力提升项目必修课《大数据系统基础》同学们的期末答辩汇报。 我们的报告将分为六个部分,第一部分是研究背景与内容。受疫情影响以来,石化行业市场日趋饱和,竞争激烈,同时利润也受到压缩,大部分石…

谈个人信息保护

一、互联网生存指南:通过哪些方法来加强个人信息保护? 1.密码管理:选择安全可靠的密码,并避免使用容易猜测的密码。不要在不同的网站和应用程序使用相同的密码,以防止未经授权的访问。 2.双重身份验证:使…

AIMAX集群配置sdfstudio容器记录

AIMAX集群配置sdfstudio容器记录 一、登录二、测试三、通过Filezilla传输数据四、通过第三方私有镜像直接创建环境方式1 从dockerhub中下载方式2 上传github中的dockerfile方式3 上传dockerhub中的第三方镜像1. 在ubuntu在安装docker2. 下载第三方镜像3. 修改hosts4. 下载证书5…

【重拾计划】[NOIP1998 提高组] 车站

今日题目 [NOIP1998 提高组] 车站 题目描述 火车从始发站(称为第 1 1 1 站)开出,在始发站上车的人数为 a a a,然后到达第 2 2 2 站,在第 2 2 2 站有人上、下车,但上、下车的人数相同,因此…

python字典:揭秘无序元素的奥秘之旅

前言 在编程中,数据的组织和管理是一个关键的方面。对于处理和操作数据,Python 提供了许多强大的数据结构,其中最常用和灵活的之一就是字典(Dictionary)。 无论您是初学者还是有经验的开发者,掌握字典的基本知识是非常重要的。本…

解决PyInstaller打包selenium脚本时弹出driver终端窗口

解决PyInstaller打包selenium脚本时弹出driver终端窗口 找到service.py C:\Users\XXX\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\common\service.py添加creationflags 在第77行添加: creationflags134217728使用PyInstaller打包 pyinstaller -F -w -…

8.2.3 【Linux】xz, xzcat/xzmore/xzless/xzgrep

8.3 打包指令: tar 8.3.1 tar 其实最简单的使用 tar 就只要记忆下面的方式即可: 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 查 询:tar -jtv -f filename.tar.bz2 解压缩:tar -jxv -f filename…

Lesson2-1:OpenCV基本操作

图像的基础操作 学习目标 掌握图像的读取和保存方法能够使用OpenCV在图像上绘制几何图形能够访问图像的像素能够获取图像的属性,并进行通道的分离和合并能够实现颜色空间的变换 1 图像的IO操作 这里我们会给大家介绍如何读取图像,如何显示图像和如何…

uniapp-设置全屏

需求&#xff1a;就是想要小程序不受限制&#xff0c;可以把图片或者文字全屏的展示&#xff0c;如下图 vue代码如下&#xff1a; <template><view class"content"><image class"image-bg" src"/static/logo.png" /><imag…

Python GUI编程利器:Tkinker中的微调节器和滑块(6)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日目标 实现下面效果&#xff1a; 微调节器(Spinbox类) 微调节器可以通过箭头调整所需的数值。 创建微调节器对象语法格式…

ChatGPT助力校招----面试问题分享(十)

1 ChatGPT每日一题&#xff1a;阻抗匹配的方法有哪些 问题&#xff1a;阻抗匹配是什么 ChatGPT&#xff1a;阻抗匹配是一种电路设计技术&#xff0c;用于确保电路中各个组件之间的电阻、电感和电容等参数相互匹配&#xff0c;以最大程度地传输信号或功率 当阻抗不匹配时&…

7/2~7/4学习成果总结

这几天初步的了解了一下Java&#xff0c;然后写了几道题&#xff1a; 下面总结一下学Java的时候遇到的一易错的小问题以及总结&#xff1a; 1. java里面只能在一个源文件里有一个public类&#xff0c;但是入口main那个可以理解为public static是一个整体也就是不属于public&a…

『C/C++养成计划』C++中的静态库和动态库|GCC|Makefile|CMake学习

C中的静态库和动态库|GCC|Makefile|CMake学习&#xff01; 文章目录 一. 什么是库二. 静态库1.1. 静态库生成1.2. 静态库制作举例1.2.1 准备测试程序1.2.2 生成静态库 1.3. 静态库的使用 三. 动态库3.1. 为什么需要动态库3.2. 生成动态链接库3.3. 动态库制作举例3.4. 动态库的…

【JUC并发编程】Callable接口创建线程

一、介绍 与继承Thread类和实现Runnable接口两种创建线程方式的区别 ① Callable接口可以有返回值 ② Callable接口可以抛出异常 ③ 执行方法不同&#xff0c;call()方法和run()方法 二、代码演示 继承Thread类和实现Runnable接口的方式创建线程 package callable;import java…

celery Periodic Tasks 周期任务

celery Periodic Tasks 周期任务 https://docs.celeryq.dev/en/latest/userguide/periodic-tasks.html /home/mike/work/celery-5.3.1/examples/periodic-tasks myapp.py """myapp.pyUsage::# The worker service reacts to messages by executing tasks.(w…