当前位置: 首页 > article >正文

Day38-【13003】短文,二叉树,完全二叉树,二叉树的顺序存储,和链式存储

文章目录

    • 第二节 二叉树
      • 二叉树的定义及重要性质
        • n个结点,能组合成多少个不同的二叉树
        • 满二叉树、完全二叉树
        • 完全二叉树的性质
        • 二叉树的性质
          • 二叉树的结点数
          • 完全二叉树的高度
      • 二叉树的存储
        • 顺序存储方式
        • 链式存储方式
          • 二叉链表的程序实现
          • 二叉链表空指针域计算

第二节 二叉树

在这里插入图片描述

二叉树的定义及重要性质

二叉树是结点的一个有限集合,这个集合或者为空,或者由一个根结点以及两棵互不相交的、定义5-2分别称为这个根的左子树和右子树的二叉树组成。左子树和右子树的根分别称为此二叉树根结点的左子结点和右子结点。
二叉树的左子树和右子树都可以存在或者为空,不同的存在状态可以组合出5种基本形态,即两棵子树均为空或均不为空,或者一棵为空、另一棵不为空,还有空树。这5种形态如图5-3所示。

叉树与树有什么关系呢?二叉树允许有空树,而树中至少含有一个结点。从这个方面来看,二叉树并不是树的真子集。除此之外,在概念上,树与二叉树之间也存在差异。对一般的非有序树而言,每个结点的各个子结点之间没有次序,而二叉树中每个结点的子结点都规定了左、右次序。即使是有序树,它与二叉树也略有不同。例如,若有序树中某个结点只有一个子结点,那么这个子结点是其父结点的唯一孩子。但在二叉树中,如果某个结点有一个子结点,那么它可以是其父结点的左子结点,也可以是其右子结点,由此可以对应于两种不同的二叉树树形。例如,图5-3c与图5-3d是两棵完全不同的二叉树。

在这里插入图片描述

n个结点,能组合成多少个不同的二叉树

在这里插入图片描述

满二叉树、完全二叉树

在这里插入图片描述

在这里插入图片描述

完全二叉树的性质

在这里插入图片描述

二叉树的性质
二叉树的结点数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这个性质的含义是,二叉树中叶结点的个数仅与度为2的结点的个数有关,具体来说,叶结点的个数比度为2的结点的个数多1,而与度为1的结点个数无关。

仅增加或减少二叉树中度为1的结点,对二叉树中叶结点的个数没有影响。这个性质也称为满二叉树定理

完全二叉树的高度

在这里插入图片描述

二叉树的存储

与线性表类似,二叉树也有两种存储方式,即顺序存储方式和链式存储方式。

顺序存储方式

先看看特殊的完全二叉树的存储方法。根据完全二叉树的定义,除最后一层以外,其余各层都是满的,而且最后一层的结点自左至右紧密排列。所以,可以使用一维数组依次存储树中各层的各个结点。存储的规则是,各层自上至下、同层间自左至右,将结点依次存入数组从前至后的各个元素中。按照前面使用过的编号方法,编号为i的结点存放在数组中下标为i的位置。例如,图5-5b所示的完全二叉树可以使用具有至少12个元素的一维数组存储,存放的结果如图5-6所示。

在这里插入图片描述

基于这样的存储规则保存的二叉树,可以很方便地在数组中找到二叉树中的相关结点,即若知道二叉树某一结点在数组中的保存位置,则可以计算出其父结点(若存在)和左、右子结点(若存在)在数组中的保存位置。
对于一般的二叉树,顺序存储的思想是,针对二叉树中的每个位置,无论这个位置有没有结点,都在数组中预留保存单元。在采用这种存储方式保存完全二叉树时,既不浪费空间,又便于有关操作的实现。

但是,如果使用这样的存储规则保存一般的二叉树,则可能会出现空间浪费的情况。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

链式存储方式

与二叉树的顺序存储方式相对应的是它的链式存储方式。钱链式存储结构与二又树的实际逻辑结构更加吻合,非常适合于表示二又树。
二叉树的定义规定,每个结点最多有两个子结点,分别是它的左子结点和右子结点。据此,可以这样定义一个结点结构:它含有两个指针域,一个指针用来指向该结点左子结点所在的结点,称为左孩子指针,简称为左指针;另一个指针用来指向该结点右子结点所在的结点,称为右孩子指针,简称为右指针。此外,还定义一个用来保存结点中数据的数据域。所以,每个结点至少包含3个域,分别保存数据、左指针和右指针。由于每个结点都含有两个指针域,故这样的链式结构被形象地称为二叉链表结构。回忆一下,在双向链表中每个结点也含有两个指针域和一个数据域。请考生考虑,使用相同的结点结构构造的双向链表和二叉链表有什么不同?

在这里插入图片描述

二叉链表的程序实现

在这里插入图片描述

二叉链表空指针域计算

在这里插入图片描述

相关文章:

Day38-【13003】短文,二叉树,完全二叉树,二叉树的顺序存储,和链式存储

文章目录 第二节 二叉树二叉树的定义及重要性质n个结点,能组合成多少个不同的二叉树满二叉树、完全二叉树完全二叉树的性质二叉树的性质二叉树的结点数完全二叉树的高度 二叉树的存储顺序存储方式链式存储方式二叉链表的程序实现二叉链表空指针域计算 第二节 二叉树…...

MyBatis常见知识点

#{} 和 ${} 的区别是什么? 答: ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于原样文本替换,可以替换任意内容,比如${driver}会被原样替换为com.mysql.jdbc. Driver。 一个…...

4. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--什么是微服务--微服务设计原则与最佳实践

相比传统的单体应用,微服务架构通过将大型系统拆分成多个独立的小服务,不仅提升了系统的灵活性和扩展性,也带来了许多设计和运维上的挑战。如何在设计和实现微服务的过程中遵循一系列原则和最佳实践,从而构建一个稳定、高效、易维…...

【AI】在Ubuntu中使用docker对DeepSeek的部署与使用

这篇文章前言是我基于部署好的deepseek-r1:8b模型跑出来的 关于部署DeepSeek的前言与介绍 在当今快速发展的技术环境中,有效地利用机器学习工具来解决问题变得越来越重要。今天,我将引入一个名为DeepSeek 的工具,它作为一种强大的搜索引擎&a…...

Linux后台运行进程

linux 后台运行进程:& , nohup-腾讯云开发者社区-腾讯云 进程 &,后台运行,结束终端退出时结束进程。 nohup 进程 &,后台运行,结束终端后依然保持运行。...

unity视频在场景中的使用

(一)软件操作在平面上显示视频播放 1.创建渲染器纹理 2.创建平面 3.在平面上添加Video player 4.视频拖拽到Video player 5.渲染模式选择渲染器纹理 6.把纹理拖到目标纹理上 7.把纹理拖到平面上就可以了 然后运行项目 8.结果 (二&#…...

vue3+vite+eslint|prettier+elementplus+国际化+axios封装+pinia

文章目录 vue3 vite 创建项目如果创建项目选了 eslint prettier从零教你使用 eslint prettier第一步,下载eslint第二步,创建eslint配置文件,并下载好其他插件第三步:安装 prettier安装后配置 eslint (2025/2/7 补充) 第四步&am…...

【电商系统架构的深度剖析与技术选型】

以下是对电商系统架构的深度剖析与技术选型: 一、电商系统架构剖析 整体架构 前台系统:是用户直接交互的部分,包括用户界面、商品展示、购物车、订单结算等模块。需注重用户体验,确保页面设计美观、商品信息清晰、购物流程简便。…...

【Android】Android开发应用如何开启任务栏消息通知

Android开发应用如何开启任务栏消息通知 1. 获取通知权限2.编写通知工具类3. 进行任务栏消息通知 1. 获取通知权限 在 AndroidManifest.xml 里加上权限配置&#xff0c;如下。 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android…...

【Android开发AI实战】基于CNN混合YOLOV实现多车牌颜色区分且针对车牌进行矫正识别(含源码)

文章目录 引言单层卷积神经网络&#xff08;Single-layer CNN&#xff09;&#x1f4cc; 单层 CNN 的基本结构&#x1f4cc; 单层 CNN 计算流程图像 透视变换矫正车牌c实现&#x1fa84;关键代码实现&#xff1a;&#x1fa84;crnn结构图 使用jni实现高级Android开发&#x1f3…...

探索前端框架的未来:Svelte 的崛起

引言 在前端开发的世界里&#xff0c;框架更新换代的速度仿佛光速。从 jQuery 到 Angular&#xff0c;再到如今大热的 React 和 Vue&#xff0c;开发者们不断追逐更轻量、更快、更易于维护的框架。如今&#xff0c;Svelte 正悄然崛起&#xff0c;并引发了关于前端框架未来的热烈…...

【工具篇】深度揭秘 Midjourney:开启 AI 图像创作新时代

家人们,今天咱必须好好唠唠 Midjourney 这个在 AI 图像生成领域超火的工具!现在 AI 技术发展得那叫一个快,各种工具层出不穷,Midjourney 绝对是其中的明星产品。不管你是专业的设计师、插画师,还是像咱这种对艺术创作有点小兴趣的小白,Midjourney 都能给你带来超多惊喜,…...

多光谱成像技术在华为Mate70系列的应用

华为Mate70系列搭载了光谱技术的产物——红枫原色摄像头&#xff0c;这是一款150万像素的多光谱摄像头。 相较于普通摄像头&#xff0c;它具有以下优势&#xff1a; 色彩还原度高&#xff1a;色彩还原准确度提升约 120%&#xff0c;能捕捉更多光谱信息&#xff0c;使拍摄照片色…...

数字人|通过语音和图片来创建高质量的视频

简介 arXiv上的计算机视觉领域论文&#xff1a; AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animation AniPortrait&#xff1a;照片级真实感肖像动画的音频驱动合成 核心内容围绕一种新的人像动画合成框架展开。 研究内容 提出 AniPortrait 框架&a…...

Vue通过触发与监听事件进行数据传递: 子组件调用 $emit 方法来将数据传递给父组件。

文章目录 引言I 组件事件事件参数defineEmits 宏声明需要抛出的事件事件校验例子:子组件告诉父组件放大所有博客文章的文字II 【详细说明】 子组件通过触发一个事件,将数据传递给父组件调用内建的 `$emit `方法传入事件名称来触发一个事件子组件通过`this.$emit`来触发一个事…...

LLMs瞬间获得视觉与听觉感知,无需专门训练:Meta的创新——在图像、音频和视频任务上实现最优性能。

引言&#xff1a; 问题&#xff1a; 当前的多模态任务&#xff08;如图像、视频、音频描述生成、编辑、生成等&#xff09;通常需要针对特定任务训练专门的模型&#xff0c;而现有的方法在跨模态泛化方面存在局限性&#xff0c;难以适应新任务。此外&#xff0c;多模态嵌入反演…...

ZZNUOJ(C/C++)基础练习1081——1090(详解版)

目录 1081 : n个数求和 &#xff08;多实例测试&#xff09; C C 1082 : 敲7&#xff08;多实例测试&#xff09; C C 1083 : 数值统计(多实例测试) C C 1084 : 计算两点间的距离&#xff08;多实例测试&#xff09; C C 1085 : 求奇数的乘积&#xff08;多实例测试…...

Springboot实现TLS双向认证

keytool 是 Java 自带的工具&#xff0c;适合与 JKS 密钥库和信任库一起使用。 一、生成自签名CA证书 生成CA密钥对和自签名证书 keytool -genkeypair -alias my-ca -keyalg RSA -keysize 2048 -validity 3650 -keystore ca.jks -storepass changeit -keypass changeit -dname …...

【DeepSeek】私有化本地部署图文(Win+Mac)

目录 一、DeepSeek本地部署【Windows】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 a、直接访问 b、chatbox网页访问 二、DeepSeek本地部署【Mac】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 5、删除已下载的模型 三、DeepSeek其他 …...

深入了解 MySQL:从基础到高级特性

引言 在当今数字化时代&#xff0c;数据的存储和管理至关重要。MySQL 作为一款广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;凭借其高性能、可靠性和易用性&#xff0c;成为众多开发者和企业的首选。本文将详细介绍 MySQL 的基础概念、安装启…...

SQL精度丢失:CAST(ce.fund / 100 AS DECIMAL(10, 2)) 得到 99999999.99

当你使用 CAST(ce.fund / 100 AS DECIMAL(10, 2)) 进行计算并转换时得到 99999999.99 这个结果&#xff0c;可能由以下几种原因导致&#xff1a; 1. DECIMAL 类型精度限制 DECIMAL(10, 2) 表示总共可以存储 10 位数字&#xff0c;其中小数部分占 2 位。这意味着整数部分最多只…...

深度学习里面的而优化函数 Adam,SGD,动量法,AdaGrad 等 | PyTorch 深度学习实战

前一篇文章&#xff0c;使用线性回归模型逼近目标模型 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课&#xff1a;引领人工智能新时代【梗直哥瞿炜】 深度学习里面的而优化函数 …...

基于Spring Boot的图书个性化推荐系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

【实战】excel分页写入导出大文件

类 RequestMapping("export")ResponseBodypublic void export(HttpServletResponse response) {long start System.currentTimeMillis();QueryVo query new QueryVo();// response响应头setResponseHeader(response, "excel");ExcelWriter writer Excel…...

【论文阅读】Comment on the Security of “VOSA“

Comment on the Security of Verifiable and Oblivious Secure Aggregation for Privacy-Preserving Federated Learning -- 关于隐私保护联邦中可验证与遗忘的安全聚合的安全性 论文来源摘要Introduction回顾 VOSA 方案对VOSA不可伪造性的攻击对于类型 I 的攻击对于类型 II 的…...

3.攻防世界 Confusion1(服务器模板注入SSTI)

题目描述如下 进入题目页面如下 图片是蟒蛇、大象&#xff1f;python、php&#xff1f; 猜测需要代码审计 点击 F12查看源码&#xff0c;有所提示flag 但是也没有其他信息了 猜测本题存在SSTI&#xff08;服务器模板注入&#xff09;漏洞&#xff0c;为验证&#xff0c;构造…...

保姆级教程 !SQL Server数据库的备份和还原

使用 SQL Server Management Studio (SSMS) 备份和还原数据库 1、数据库备份 Step 1 打开 SSMS 输入server name 以及用户名和密码连接到你的 SQL Server 实例 Step 2 展开Database,选中你要备份的数据库 Step 3 右击选中的数据库&#xff0c;点击Tasks --> Back …...

AlwaysOn 可用性组副本所在服务器以及该副本上数据库的各项状态信息

目录标题 AlwaysOn语句代码解释&#xff1a;1. sys.dm_hadr_database_replica_states 视图字段详细解释及官网链接官网链接字段解释 2. sys.availability_replicas 视图字段详细解释及官网链接官网链接字段解释 查看视图的创建语句方法一&#xff1a;使用 SQL Server Managemen…...

Android telephony | supl PDN建立和定位信息获取

在Android系统中&#xff0c;SUPL&#xff08;Secure User Plane Location&#xff09;是一种用于辅助GPS定位的技术&#xff0c;它通过建立特定的APN&#xff08;Access Point Name&#xff09;连接来传输定位数据。 以下介绍Android Telephony发起SUPL APN的PDN&#xff08;P…...

ip地址是手机号地址还是手机地址

在数字化生活的浪潮中&#xff0c;IP地址、手机号和手机地址这三个概念如影随形&#xff0c;它们各自承载着网络世界的独特功能&#xff0c;却又因名称和功能的相似性而时常被混淆。尤其是“IP地址”这一术语&#xff0c;经常被错误地与手机号地址或手机地址划上等号。本文旨在…...