数据结构~~树(2024/2/8)
目录
树
1、定义:
2、树的基本术语:
3、树的表示
树
1、定义:
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
树是递归定义的!!
【注意】
(1)当n=0时称为空树。
(2)当n=0时称为空树,对于非空树T:
只有一个根结点(root);
除根节点外的其余结点可分为m个互不相交的有限集T1,T2,……,Tm,其中每个集合本身又是一棵树,称为根的子树。
2、树的基本术语:
结点:树的一个独立单元,包含一个数据元素或者指向其子树的分支。如图中的A,B,C等。
结点的度:结点拥有的子树数称为结点的度(也可以理解为这个结点有多少个孩子)。如A的度是2,B的度是3,D的度是0。
树的度:树的各个结点的度的最大值。如图中的树的度为3。
叶子结点(或者终端结点):度为0的结点。如图中的D,E,F,G。
非终端结点:度不为0的结点。除根结点外,非终端结点也称为内部结点。如图中B,C。
孩子结点(或者子节点):一个结点的子树的根结点称为该结点的孩子结点。如图中B和C是A的子结点。
双亲结点(或者父结点):一个结点有一个子结点,该结点称为其子结点的父结点。如图中,A是B和C的双亲结点。
兄弟结点:同一双亲的孩子之间互称兄弟。如图中B和C是兄弟结点。
祖先:从根结点到该结点所经分支上的所有结点。如D的祖先是A和B。
子孙:以某结点为根的子树的任一结点都称为该结点的子孙。如D,E,F是B的子孙。
层次:从根结点开始,根结点为第一层,根的孩子为第二层,以此类推直到最后一层。如A是第一层,B是第二层,D是第三层。
深度:树中结点的最大层次。如A这棵树的深度是3。
森林:由m棵互不相交的树构成的集合。如去掉A结点,B和C这两棵子树就是森林。
3、树的表示
树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,实际中树有很多种表示方式,如:双亲表示法,孩子表示法、孩子兄弟表示法等等。
我们了解其中最常用的孩子兄弟表示法:
typedef int DataType;
struct Node
{struct Node* firstChild1; struct Node* pNextBrother; DataType data;
};
下一次我们开始学习二叉树!!!
相关文章:

数据结构~~树(2024/2/8)
目录 树 1、定义: 2、树的基本术语: 3、树的表示 树 1、定义: 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&…...

【教学类-48-03】202402011“闰年”(每4年一次 2月有29日)世纪年必须整除400才是闰年)
2000-2099年之间的闰年有25次, 背景需求: 已经制作了对称年月的数字提取,和年月日相等的年份提取 【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)-CSDN博客文章浏览阅读84次。【教学类-48-01】202402…...
如何开发一个属于自己的人工智能语言大模型?
要开发一个属于自己的人工智能语言模型,你需要遵循以下步骤: 数据收集:首先你需要大量的文本数据来训练你的模型。这些数据可以来自于各种来源,例如书籍、网站、新闻文章等。你需要确保这些数据足够多样化,以便模型能学…...

【HTTP】localhost和127.0.0.1的区别是什么?
目录 localhost是什么呢? 从域名到程序 localhost和127.0.0.1的区别是什么? 域名的等级划分 多网站共用一个IP和端口 私有IP地址 IPv6 今天在网上逛的时候看到一个问题,没想到大家讨论的很热烈,就是标题中这个: …...
Edge浏览器-常用快捷键
按键组合作用Ctrl Shift I开发人员工具Ctrl E定位到 空地址栏Ctrl L定位到 地址栏Ctrl Shift B显示或隐藏 收藏夹栏Ctrl Shift O打开收藏夹(搜索)Ctrl T打开一个新标签页Ctrl W关闭当前标签页Ctrl Shift T重新打开刚才关闭的标签页Ctrl Tab切换到下一个标签页Ctrl…...
C++:Vector动态数组的copy深入理解
动态数组分配的大小默认为2的n次方1,2,4,8... 在main中创建的vertices,push需要放到Vertex中(copy),下一次copy是因为要调整vertices的大小 vertices.push_back(Vertex(1,2,3));//拷贝 第一次&a…...
【PyTorch】PyTorch中张量(Tensor)切片操作
PyTorch深度学习总结 第三章 PyTorch中张量(Tensor)切片操作 文章目录 PyTorch深度学习总结一、前言二、获取张量中的元素1、切片(行、列数)方法2、torch.where()函数3、使元素置零的操作 一、前言 上文介绍了PyTorch中改变张量(Tensor)形状的操作&…...

GeoServer 2.11.1升级解决Eclipse Jetty 的一系列安全漏洞问题
Eclipse Jetty 资源管理错误漏洞(CVE-2021-28165) Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7656) Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7657) Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7658) Jetty 信息泄露漏洞(CVE-2017-9735) Eclipse Jetty 安全漏洞(CVE-2022-20…...

【蓝桥杯选拔赛真题34】C++最大值 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
目录 C/C++最大值 一、题目要求 1、编程实现 2、输入输出...

STM32之USART
概述 串口通信,通用异步收发传输器(Universal Asynchronous Receiver/Transmitter ),简称UART;而USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步收发传输器。 USAR…...

unity 点击事件
目录 点击按钮,显示图片功能教程 第1步添加ui button,添加ui RawImage 第2步 添加脚本: 第3步,把脚本拖拽到button,点击button,设置脚本的变量, GameObject添加 Component组件 点击按钮&am…...

idea自带的HttpClient使用
1. 全局变量配置 {"local":{"baseUrl": "http://localhost:9001/"},"test": {"baseUrl": "http://localhost:9002/"} }2. 登录并将结果设置到全局变量 PostMapping("/login")public JSONObject login(H…...

vue3-应用规模化-路由和状态
客户端 vs. 服务端路由 服务端路由指的是服务器根据用户访问的 URL 路径返回不同的响应结果。当我们在一个传统的服务端渲染的 web 应用中点击一个链接时,浏览器会从服务端获得全新的 HTML,然后重新加载整个页面。 然而,在单页面应用中&…...

网络安全检查表
《网络攻击检查表》 1.应用安全漏洞 2.弱口令,默认口令 3.服务器互联网暴露 4.操作系统,中间件安全漏洞 5.研发服务器,邮件服务器等安全检查...
SSM框架,Maven的学习(下)
依赖传递和依赖冲突 依赖传递指的是当一个模块或库 A 依赖于另一个模块或库 B,而 B 又依赖于模块或库 C,那么 A 会间接依赖于 C。这种依赖传递结构可以形成一个依赖树。当我们引入一个库或框架时,构建工具(如 Maven、Gradle&…...

Vivado开发FPGA使用流程、教程 verilog(建立工程、编译文件到最终烧录的全流程)
目录 一、概述 二、工程创建 三、添加设计文件并编译 四、线上仿真 五、布局布线 六、生成比特流文件 七、烧录 一、概述 vivado开发FPGA流程分为创建工程、添加设计文件、编译、线上仿真、布局布线(添加约束文件)、生成比特流文件、烧录等步骤&a…...

C语言之动态内存管理
目录 1. 为什么要有动态内存分配2. malloc和freemallocfree 3. calloc和realloccallocrealloc 4. 常见的动态内存的错误对NULL直接的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存…...

【AIGC风格prompt深度指南】掌握绘画风格关键词,实现艺术模仿的革新实践
[小提琴家]ASCII风格,点,爆炸,光,射线,计算机代码 由冰和水制成的和平标志]非常详细,寒冷,冰冻,大气,照片逼真,流动,16K 胡迪尼模拟火和水&#x…...

Qt安装配置教程windows版(包括:Qt5.8.0版本,Qt5.12,Qt5.14版本下载安装教程)(亲测可行)
目录 Qt5.8.0版本安装教程Qt5.8.0版本下载安装 Qt5.12.2版本安装教程下载安装 Qt 5.14.2安装教程下载安装和创建项目 参考视频 QT为嵌入式系统提供了大量的库和可重用组件。 WPS Office,咪咕音乐,Linux桌面环境等都是QT开发的。 Qt5.8.0版本安装教程 Q…...

SpringCloud-Ribbon实现负载均衡
在微服务架构中,负载均衡是一项关键的技术,它可以确保各个服务节点间的负载分布均匀,提高整个系统的稳定性和性能。Spring Cloud 中的 Ribbon 就是一种负载均衡的解决方案,本文将深入探讨 Ribbon 的原理和在微服务中的应用。 一、…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...