数据结构--树4.1
目录
一、树的定义
二、结点的分类
三、结点间的关系
四、结点的层次
五、树的存储结构
一、树的定义
树(Tree)是n(n>=0)个结点的有限集。当n=0时称为空树,在任意一个非空树中:
——有且仅有一个特定的称为根(Root)的结点;
——当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、……,其中每一个集合
本身又是一棵树,并且称为根的子树(SubTree)。
——n>0时,根结点是唯一的,坚决不可能存在多个结点。
——n>0时,子树的个数是没有限制的,但它们互相是一定不会相交的。

二、结点的分类
上图所示的每一个圈圈我们就称为树的一个结点。结点拥有的子树数称为结点的度(Degree),树的度取树内各结点的度的最大值。
——度为0的结点称为叶结点(Leaf)或终端结点;
——度不为0的结点称为分支结点或非终端结点,除根结点外,分支结点也称为内部结点。
三、结点间的关系
1、结点的子树的跟称为结点的孩子(Child),相应的,该结点称为孩子的双亲(Parent),同一双亲的孩子之间互称为兄弟(Sibling)。
2、结点的祖先是从根到该结点所经分支上的所有结点。
四、结点的层次
1、结点的层次(Level)从根开始定一起,根为第一层,根的孩子为第二层。
2、其双亲在同一层的结点互为堂兄弟。
3、树中结点的最大层次称为树的深度(Depth)或高度。

五、树的存储结构
#include <stdio.h>#define MAX_TREE_SIZE 100typedef char ElemType;
//孩子结点
typedef strcut Ctnode
{int child;//孩子结点的下标 struct Ctnode *next;//指向下一个孩子结点的指针 } * ChildPtr;
//表头结点
typedef struct
{ElemType data;//存放在树种的结点的数据 int parent;//存放双亲的下标 ChildPtr firstchild;//指向第一个孩子的指针
}Ctbox;
//树结构
typedef struct
{Ctbox nodes[MAX_TREE_SIZE];//结点数据 }
相关文章:
数据结构--树4.1
目录 一、树的定义 二、结点的分类 三、结点间的关系 四、结点的层次 五、树的存储结构 一、树的定义 树(Tree)是n(n>0)个结点的有限集。当n0时称为空树,在任意一个非空树中: ——有且仅有一个特定的…...
webpack(二)webpack介绍与基础配置
什么是webpack webpack最初的目标是实现前端项目模块化,旨在更高效的管理和维护项目中的每一个资源。 可以看做是模块打包机,分析你的项目结构,找到javascript模块以及其它一些浏览器不能直接运行的拓展语言(Scss、TypeScript等&…...
RabbitMQ | 在ubuntu中使用apt-get安装高版本RabbitMQ
目录 一、官方脚本 二、彻底卸载 三、重新安装 1.安装高版本Erlang 2.安装RabbitMQ 一、官方脚本 直接使用apt安装的rabbitmq版本较低,甚至可能无法使用死信队列等插件。首先提供一个 官方 的安装脚本: #!/usr/bin/sh sudo apt-get install curl …...
springboot集成es 插入和查询的简单使用
第一步:引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.2.5.RELEASE</version></dependency>第二步:…...
liunx下ubuntu基础知识学习记录
使用乌班图 命令安装使用安装网络相关工具安装dstat抓包工具需要在Ubuntu内安装openssh-server gcc安装vim安装hello word输出1. 首先安装gcc 安装这个就可以把gcc g一起安装2. 安装VIM3.编译运行代码 解决ubuntu与主机不能粘贴复制 命令安装使用 安装网络相关工具 使用ifconf…...
基于Googlenet深度学习网络的螺丝瑕疵检测matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ....................................................................................% 获…...
keepalived + lvs (DR)
目录 一、概念 二、实验流程命令 三、实验的目的 四、实验步骤 一、概念 Keepalived和LVS(Linux Virtual Server)可以结合使用来实现双机热备和负载均衡。 Keepalived负责监控主备服务器的可用性,并在主服务器发生故障时,将…...
微服务框架 go-zero 快速实战
对于咱们快速了解和将 go-zero 使用起来,我们需要具备如下能力: 基本的环境安装和看文档的能力 Golang 的基本知识 Protobuf 的基本知识 web,rpc 的基本知识 基本的 mysql 知识 其实这些能力,很基础,不需要多么深入&a…...
mysql基础面经之三:事务
6 事务 6.1 说一下事务的ACID和隔离级别 1 讲解了AID三个特性都是为了C(一致性)服务的。一般数据库需要使用事务保证数据库的一致性。 正确情况下最好详细讲讲: ACID是用来描述数据库事务的四个关键特性的首字母缩写,具体包括&a…...
JavaScript基本数组操作
在JavaScript中,内置了很多函数让我们可以去对数组进行操作,本文我们就来学习这些函数吧 添加元素 push ● push可以让我们在数组后面再添加一个数据,例如 const friends ["张三", "李四", "王五"]; frie…...
C#---第21: partial修饰类的特性及应用
0.知识背景 局部类型适用于以下情况: 类型特别大,不宜放在一个文件中实现。一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。需要多人合作编写一个类 局部类型的限制: 局部类型只适用于类、接口、结构&am…...
SQL 语句继续学习之记录三
一,数据的插入(insert 语句的使用方法) 使用insert语句可以向表中插入数据(行)。原则上,insert语句每次执行一行数据的插入。 列名和值用逗号隔开,分别扩在()内,这种形式称为清单。…...
Nexus仓库介绍以及maven deploy配置
一 、Nexus仓库介绍 首先介绍一下Nexus的四个仓库的结构: maven-central 代理仓库,代理了maven的中央仓库:https://repo1.maven.org/maven2/; maven-public 仓库组,另外三个仓库都归属于这个组,所以我们的…...
A Survey on Knowledge-Enhanced Pre-trained Language Models
摘要 自然语言处理(NLP)已经通过使用BERT等预训练语言模型(plm)发生了革命性的变化。尽管几乎在每个NLP任务中都创造了新的记录,但plm仍然面临许多挑战,包括可解释性差,推理能力弱,以及在应用于下游任务时需要大量昂贵的注释数据。通过将外部知识集成到plm中,知识增强预训…...
SQL求解用户连续登录天数
数据分析面试过程中,一般都逃不掉对SQL的考察,可能是笔试的形式,也可能是面试过程中面试官当场提问,当场在纸上写出,或者简单说一下逻辑。 今天,就来分享一道面试中常常被问到的一类SQL问题:连…...
掌握逻辑漏洞复现技术,保护您的数字环境
环境准备 这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。 1、支付逻辑漏洞 攻击相关介绍 介绍: 支付逻辑漏洞是指攻击者利用支付系统的漏洞,突破系统的限制,完成非法的支付操作。攻击者可以采…...
windows系统服务器在不解锁屏幕不输入密码的前提下,电脑通电开机启动程序。
在控制面板中找到“管理工具”中的 “任务计划程序”,打开“任务计划程序”窗口。如图: 双击打开任务计划程序,空白出右键创建基本任务,或者点击最右侧的创建基本任务。 输入名称,点击下一步。 先选择计算机启动时&a…...
spring cloud seata集成
目录 一、seata使用场景 二、seata组成 三、seata服务端搭建 四、客户端使用seata 4.1 客户端增加undo_log表 4.2 客户端增加seata相关配置 4.3 客户端使用注解 五、测试 一、seata使用场景 微服务中,一个业务涉及到多个微服务系统,每个微服务…...
HTTP 常⻅的状态码有哪些,以及适⽤场景
⼀、HTTP状态码 HT T P 状态码( HT T P S t a t u s Co d e )是⽤来表示⽹⻚服务器超⽂本传输协议响应状态的 3 位数字代 码。它由 RFC 2 6 1 6 规范定义,并得到 RFC 2 5 1 8 、 RFC 2 8 1 7 、 RFC 2 2 9 5 、 RFC 2 7 7 4 与 RFC 4 9 1 8…...
后端给前端传参数忽略空属性
JsonInclude JsonInclude注解用于指定在对象序列化为JSON字符串时,哪些属性应该被包含进去,哪些属性应该被忽略掉。 JsonInclude注解有以下几个常用选项: JsonInclude(JsonInclude.Include.NON_NULL):表示只有属性值不为null的属…...
实测:JD匹配度从50%到90%,面试邀约直接翻倍,我才发现简历写错了10年!
“简历投出去就石沉大海,每天海投几十份,零回复。”“好不容易收到面试,结果聊了几句就没下文了,感觉岗位根本不适合我。”“JD看了又看,觉得自己的经验挺符合啊,为啥总是卡在第一关?”这些&…...
NotebookLM视频处理突然变慢?紧急排查清单:GPU卸载阈值、音频采样率陷阱、语言模型缓存泄漏
更多请点击: https://codechina.net 第一章:NotebookLM视频转文字 NotebookLM 原生不支持直接上传视频文件进行转录,但可通过将视频中的音频提取为标准格式(如 WAV 或 MP3),再借助 Google 的 Speech-to-Te…...
LNK2001 无法解析的外部符号 “public: static struct QMetaObject const UIDPrintPage::staticMetaObject“
排查一早上的问题,不知道设置哪里出了这个问题,突然提示无法生成Qt的元对象moc_对应的文件,所以这里查找问题根源,语法错误还是路径设置等问题。最终定位还是文件属性设置有问题,估计是改了那些设置吧,最终…...
如何快速下载并配置Taotoken的CLI工具实现一键接入
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何快速下载并配置Taotoken的CLI工具实现一键接入 对于需要统一团队开发环境的开发者而言,手动为每个项目、每位成员配…...
从 2.5 亿到 30 亿!2026AI搜索行业爆发,API接口+优质资源双驱动,GEO媒介资源平台选型指南
2026年,生成式引擎优化(GEO)行业已迈入关键发展期,API接口规模化落地与优质资源竞争成为行业核心焦点。当前,AI搜索流量占比已突破52%,企业对GEO服务商的需求不再局限于简单的内容优化,而是升级…...
监区越界预警革命:UWB单点局限,无感定位全域穿透式风控
监区越界预警革命:UWB单点局限,无感定位全域穿透式风控一、行业现状:传统UWB定位管控的单点式致命短板当前国内绝大多数智慧监区、看守所、戒毒所的人员越界预警与区域管控体系,仍高度依赖UWB穿戴式定位技术,依托定位基…...
数据缺失处理实战指南:从原理到应用,掌握KNN与MICE填补技术
1. 项目概述:数据缺失,一个绕不开的“坑”做数据分析、机器学习或者任何和数据打交道的工作,你大概率都遇到过这种情况:打开数据集,满怀期待地准备大干一场,结果发现好几列数据里都夹杂着刺眼的“NaN”、“…...
DataRoom开源大屏设计器:零代码打造专业数据可视化大屏的终极指南
DataRoom开源大屏设计器:零代码打造专业数据可视化大屏的终极指南 【免费下载链接】DataRoom 🔥基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的大屏设计器,具备目录管理、DashBoard设计、预览能力,支持MySQL…...
如何用My-TODOs打造高效跨平台待办清单:免费开源桌面应用终极指南
如何用My-TODOs打造高效跨平台待办清单:免费开源桌面应用终极指南 【免费下载链接】My-TODOs A cross-platform desktop To-Do list. 跨平台桌面待办小工具 项目地址: https://gitcode.com/gh_mirrors/my/My-TODOs 在现代快节奏的工作生活中,高效…...
Qt串口通信与STM32 PWM实战:滑动条控制RGB灯全流程解析
1. 项目概述与核心价值最近在做一个智能家居控制面板的原型,核心需求之一就是通过一个直观的图形界面,去实时调节RGB氛围灯的亮度和颜色。这听起来像是把手机App上的功能搬到了嵌入式设备上,但背后的实现链路却完全不同。我选择了Qt作为上位机…...
