数据结构(超详细讲解!!)第二十三节 树型结构
1.定义
树型结构是一类重要的非线性数据结构,是以分支关系定义的层次结构。是一种一对多的逻辑关系。
树型结构是结点之间有分支,并且具有层次关系的结构,它非常类似于自然界中的树。树结构在客观世界中是大量存在的,例如家谱、行政组织机构都可用树形象地表示。树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法的行为时,可用树来描述其执行过程。等等。
树(Tree)是n (n≥0)个结点的有限集T,T为空时称为空树,否则它满足以下条件:
(1) T中有且仅有一个结点K0没有前驱,称K0为树的根结点(Root)。
(2) 除根结点以外,其余结点有且仅有一个直接前驱。
(3) T中各结点可以有0个或多个后继。
(4) 当n ≥ 1时,除根结点以外,其余结点可分为m(m≥0)个互不相交的有限集合T1,T2,…,Tm。其中每个集合又构成一棵树,树T1,T2,…,Tm被称为根结点K0的子树(Subtree)。
树的逻辑结构表示数据之间的关系是一对多,或者多对一的关系。它的结构特点具有明显的层次关系,是一种十分重要的非线性的数据结构。
注:树的定义具有递归性,即树中还有树。

2.树的基本术语
1.父母、孩子与兄弟结点
结点的直接前驱结点称为双亲(parents)结点。
结点的直接后继结点称为孩子(child)结点。
拥有同一个父母结点的多个结点之间称为兄弟(sibling)结点。
结点的祖先(ancestor)是指从根结点到其双亲结点所经过的所有结点。(祖先结点)
结点的后代(descendant)是指该结点的所有孩子结点,以及孩子的孩子等。 (子孙结点)
祖先与后代的关系则是对父子关系的延伸,其定义了树中结点的纵向次序 。
2.度
结点的度(degree)是指结点所拥有子树的棵数。
度为零的结点称为叶子(leaf)或者终端结点
度不为零的结点称为分支结点或者非终端结点、非叶结点。
树的度是指树中各结点度的最大值。
3.结点层次、树的高度
结点的层次(level)属性反映结点处于树中的层次位置。
约定根结点的层次为1,其余结点的层次是其父母结点的层次加1.
树的高度(height)或深度(depth)是树中结点的最大层次数。
4.边、路径
设树中X结点是Y结点的父母结点,有序对(X,Y)称为连接这两个结点的分支,也称为边(edge)。
设(X0,X1,…,Xk-1)是由树中结点组成的一个序列,且(Xi,Xi+1)(0≤i<k-1)都是树中的边,则该序列称为X0到Xk-1的一条路径(path)。
路径长度(path length)为路径上的边数。
5.无序树、有序树
若把树中每个结点的各子树看成从左到右有次序的(即不能互换),则称该树为有序树(Ordered Tree);否则称为无序树(Unordered Tree)
如果规定k1和k2是兄弟,且k1在k2的左边,则k1的任一子孙都在k2的任一子孙的左边,则定义了树中结点的横向次序
6.森林
森林(Forest)是m(m≥0)棵互不相交树的集合。
给森林加上一个根结点就变成一棵树。
将树的根结点删除就变成森林。
3.树的表示方法
1.图形表示法

2.嵌套集合表示法

3.广义表表示法
根作为由子树森林组成的表的名字写在表的左边

4.凹入表示法(目录表示法)

4.抽象数据类型
ADT Tree{数据对象:D是具有相同属性的数据元素的集合。数据关系:若D为空集,则称为空树;若D仅含一个数据元素,则R为空集,否则R={H},H是如下二元关系:(1) 在D中存在唯一的称为根的数据元素root, 它在关系H下没有前驱。 (2) 除root以外, D中每个结点在关系H下都有且仅有一个前驱。 基本操作:void CreateTree(Tree *t,definition):初始条件:树t不存在。操作结果:按definition构造树t。int TreeEmpty(Tree t):初始条件:树t存在 。操作结果:若t为空树, 则返回1, 否则返回0。int TreeDepth(Tree t)初始条件:树t存在。操作结果:返回树t的深度。……
}
相关文章:
数据结构(超详细讲解!!)第二十三节 树型结构
1.定义 树型结构是一类重要的非线性数据结构,是以分支关系定义的层次结构。是一种一对多的逻辑关系。 树型结构是结点之间有分支,并且具有层次关系的结构,它非常类似于自然界中的树。树结构在客观世界中是大量存在的,例如家谱、…...
Python 日志记录器logging 百科全书 之 日志回滚
Python 日志记录器logging 百科全书 之 日志回滚 前言 在之前的文章中,我们学习了关于Python日志记录的基础配置。 本文将深入探讨Python中的日志回滚机制,这是一种高效管理日志文件的方法,特别适用于长时间运行或高流量的应用。 知识点&…...
线圈寿命预测 数据集讲解
来自-郭师兄 1.这个是线圈数据的阻抗、电抗等数据,我想根据这个个数据进行线圈寿命预测也就是RUL预测,请问有什么思路吗。 最简单的思路: 数据通过某种方法进行压缩表征到一维再通过 同时需要标签。 确定一个特征 使用降维方法如同PCA来构…...
Flutter.源码分析.flutter/packages/flutter/lib/src/widgets/scroll_view.dart/GridView
Flutter.源码分析 GridView flutter/packages/flutter/lib/src/widgets/scroll_view.dart/GridView 李俊才 的个人博客:https://blog.csdn.net/qq_28550263 本文地址:https://blog.csdn.net/qq_28550263/article/details/134375048 本文提供 Flutter 框…...
IDEA 2022创建Spring Boot项目
首先点击New Project 接下来: (1). 我们点击Spring Initializr来创建。 (2). 填写项目名称 (3). 选择路径 (4). 选择JDK------这里笔者选用jdk17。 (5). java选择对应版本即可。 (6). 其余选项如无特殊需求保持默认即可。 然后点击Next。 稍等一会,…...
Python 框架学习 Django篇 (十) Redis 缓存
开发服务器系统的时候,程序的性能是至关重要的。经过我们前面框架的学习,得知一个请求的处理基本分为接受http请求、数据库处理、返回json数据,而这3个部分中就属链接数据库请求的响应速度最慢,因为数据库操作涉及到数据库服务处理…...
考研数学笔记:线性代数中抽象矩阵性质汇总
在考研线性代数这门课中,对抽象矩阵(矩阵 A A A 和矩阵 B B B 这样的矩阵)的考察几乎贯穿始终,涉及了很多性质、运算规律等内容,在这篇考研数学笔记中,我们汇总了几乎所有考研数学要用到的抽象矩阵的性质…...
C语言--假设共有鸡、兔30只,脚90只,求鸡、兔各有多少只
一.题目描述 假设共有鸡、兔30只,脚90只,求鸡、兔各有多少只? 二.思路分析 本题是一个典型的穷举法例题,而穷举法,最重要的就是条件判断。⭐⭐ 本题中的条件很容易发现: 假设鸡有x只,兔有y只…...
nacos适配达梦数据库
一、下载源码 源码我直接下载gitee上nacos2.2.3的,具体链接:https://gitee.com/mirrors/Nacos/tree/2.2.3,具体如下图: 二、集成达梦数据库驱动 解压源码包,用idea打开源码,等idea和maven编译完成ÿ…...
CTFhub-RCE-读取源代码
源代码: <?php error_reporting(E_ALL); if (isset($_GET[file])) { if ( substr($_GET["file"], 0, 6) "php://" ) { include($_GET["file"]); } else { echo "Hacker!!!"; } } else {…...
Ansible playbook详解
playbook是ansible用于配置,部署,和被管理被控节点的剧本 playbook常用的YMAL格式:(文件名称以 .yml结尾) 1、文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。 2、在同一…...
Linux编辑器:vim的简单介绍及使用
目录 1.什么是vim 2.vim的基本概念 3.vim 的基本操作 4. 各模式下的命令集 4.1 正常模式命令集 4.2 末行模式命令集 5.补充 5.1 vim支持多文件编辑 5.2 vim 的配置 1.vim 配置原理 2. 常用简单配置选项: 3. 使用插件 1.什么是vim Vim 是从 vi 发展出…...
Redhat7查看时区、修改时区
问题: 安装好redhat7之后,发现时间和物理机上面的网络时间不一致,于是查看本着修改时间的目的,却发现原来是时区的问题。 解决步骤: 查看时区状态信息 timedatectl修改时区到亚洲/上海 timedatectl set-timezone A…...
OpenCV踩坑笔记使用笔记入门笔记整合SpringBoot笔记大全
springboot开启摄像头抓拍照片并上传实现&问题记录 NotAllowedErrot: 请求的媒体源不能使用,以下情况会返回该错误: 当前页面内容不安全,没有使用HTTPS没有通过用户授权NotFoundError: 没有找到指定的媒体通道NoReadableError: 访问硬件设备出错Ov…...
【数据结构】栈和队列的模拟实现(两个方式实现)
前言 💓作者简介: 加油,旭杏,目前大二,正在学习C,数据结构等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏…...
OpenCV+相机校准和3D重建
相机校准至少需要10个测试图案,所需的重要输入数据是3D现实世界点集以及图像中这些点的相应2D坐标。3D点称为对象点,而2D图像点称为图像点。 准备工作 除了棋盘,我们还可以使用圆形网格。 在这种情况下,我们必须使用函数cv.find…...
2023.11.14-hive之表操作练习和文件导入练习
目录 需求1.数据库基本操作 需求2. 默认分隔符案例 需求1.数据库基本操作 -- 1.创建数据库test_sql,cs1,cs2,cs3 create database test_sql; create database cs1; create database cs2; create database cs3; -- 2.1删除数据库cs2 drop database cs2; -- 2.2在cs3库中创建…...
idea2023启动springboot项目如何指定配置文件
方法一: 方法二: 举例:...
在 uniapp 中 一键转换单位 (px 转 rpx)
在 uniapp 中 一键转换单位 px 转 rpx Uni-app 官方转换位置利用【px2rpx】插件Ctrl S一键全部转换下载插件修改插件 Uni-app 官方转换位置 首先在App.vue中输入这个: uni.getSystemInfo({success(res) {console.log("屏幕宽度", res.screenWidth) //屏…...
SQL对数据进行去重
工作中使用SQL对数据进行处理计算时可能会遇到这样的问题;读取的表数据会有重复,或者我们关注的几个字段的数据会有重复,直接使用原表数据会引起计算结果不准或者做表连接时产生笛卡尔积。 本文记录使用SQL进行数据去重的几种算法。 distinc…...
基于MPC模型预测的两轮差速移动机器人多种轨迹跟踪控制(带参考文献)
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
KiloClaw:为企业AI代理安全合规保驾护航
OpenClaw托管版KiloClaw:企业AI代理管理新方案由GitLab联合创始人Sid Sijbrandij和Scott Breitenother共同创立的Kilo,推出了面向企业的KiloClaw,它是OpenClaw平台的托管版本。该产品旨在为企业提供对员工使用AI代理执行代码库监控、邮件起草…...
DownKyi:三分钟学会B站视频下载的终极解决方案
DownKyi:三分钟学会B站视频下载的终极解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)。…...
Unity/Godot开发者看过来:手把手教你将Spine动画导出并集成到游戏引擎里(附常见报错解决)
Unity/Godot开发者实战指南:Spine动画工程化集成全流程解析 当你在Spine中完成了一个令人满意的角色动画后,接下来面临的真正挑战是如何让它活灵活现地跑在游戏引擎里。作为经历过无数次Spine动画集成的老手,我深知这个过程中可能遇到的种种…...
PPTist:4大突破性功能重塑Web端演示文稿创作体验
PPTist:4大突破性功能重塑Web端演示文稿创作体验 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing for the…...
2.5m双馈风力发电机DFIG的带储能Simulink电气建模与仿真(参数源自IEEE3)”
2.5m双馈风力发电机DFIG并网_带储能的simulink电气建模与仿真,参数来自IEEE3半夜两点盯着Simulink界面眼冒绿光,手里的咖啡已经续到第五杯——这大概每个搞风电建模的工程师都经历过的场景。今天咱们就唠唠这个让人又爱又恨的2.5MW双馈风机并网模型&…...
万象视界灵坛惊艳效果:上传模糊图片仍准确返回‘雨夜霓虹’‘80年代复古’等高阶语义
万象视界灵坛惊艳效果:上传模糊图片仍准确返回雨夜霓虹80年代复古等高阶语义 1. 突破传统视觉识别的智能平台 在数字内容爆炸式增长的今天,如何从海量视觉数据中快速提取有价值的信息成为一大挑战。传统图像识别技术往往受限于预设分类体系,…...
电弧现象解析与过零检测灭弧技术
1. 电弧现象的本质与危害解析1.1 电弧的物理本质电弧本质上是一种气体放电现象,当机械触点分离时,触点间的电子或离子在电场作用下游离到空气中形成导电通道。这个过程中,原本绝缘的空气被电离成为等离子体,维持了电流的持续流通。…...
MySQL 生产环境故障排查与性能优化全攻略(8.0 版本实战)
前言MySQL 作为目前企业级应用最广泛的开源关系型数据库,在生产环境中承担着核心数据存储与处理任务。默认配置往往无法满足高并发、大数据量的业务场景,同时运维过程中也会频繁遇到各类故障。本文基于 MySQL 8.0 版本,从单实例故障、主从复制…...
基于Matlab的轴承-空心转轴-飞轮不同耦合类型动力学分析
基于Matlab的轴承-空心转轴-飞轮不同耦合类型动力学分析 保持轴承类型不变,变换飞轮和转轴耦合方式,分固有频率的变化趋势 可自行定义轴承、飞轮、转轴参数 程序高度模块化,修改十分方便 程序已调通,可直接运行最近做了一个关于轴…...
