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个域,分别保存数据、左指针和右指针。由于每个结点都含有两个指针域,故这样的链式结构被形象地称为二叉链表结构。回忆一下,在双向链表中每个结点也含有两个指针域和一个数据域。请考生考虑,使用相同的结点结构构造的双向链表和二叉链表有什么不同?

在这里插入图片描述

二叉链表的程序实现

在这里插入图片描述

二叉链表空指针域计算

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

echarts 3d中国地图飞行线

一、3D中国地图 1. 一定要使用 echarts 5.0及以上的版本; 2. echarts 5.0没有内置中国地图了。点击下载 china.json; 3. 一共使用了四层地图。 (1)第一层是中国地图各省细边框和展示南海诸岛; (2)第二层是…

傅里叶公式推导(一)

文章目录 三角函数系正交证明图观法数学证明法计算当 n不等于m当 n等于m(重点) 其它同理 首先要了解的一点基础知识: 三角函数系 { sin ⁡ 0 , cos ⁡ 0 , sin ⁡ x , cos ⁡ x , sin ⁡ 2 x , cos ⁡ 2 x , … , sin ⁡ n x , cos ⁡ n x ,…

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现 目录 SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来(优…

DeepSeek 助力 Vue 开发:打造丝滑的步骤条

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

利用二分法进行 SQL 盲注

什么是sql注入? SQL 注入(SQL Injection)是一种常见的 Web 安全漏洞,攻击者可以通过构造恶意 SQL 语句来访问数据库中的敏感信息。在某些情况下,服务器不会直接返回查询结果,而是通过布尔值(Tr…

USB子系统学习(四)用户态下使用libusb读取鼠标数据

文章目录 1、声明2、HID协议2.1、描述符2.2、鼠标数据格式 3、应用程序4、编译应用程序5、测试6、其它 1、声明 本文是在学习韦东山《驱动大全》USB子系统时,为梳理知识点和自己回看而记录,全部内容高度复制粘贴。 韦老师的《驱动大全》:商…

数据安全:守护数据的坚固防线

在数字化时代,数据已成为企业和组织的核心资产。然而,数据的安全性问题也日益凸显,数据泄露、数据滥用等事件频发,给企业和个人带来了巨大的损失。今天,让我们深入《DAMA数据管理知识体系指南(第二版&#…

PyQt学习记录

0. 安装配置 0.1 安装相关库 首先打开你的PyCharm程序,然后新建一个目录用于学习,其次在terminal中输入 pip install pyqt5如果你不具有科学上网能力,请改为国内源 pip install pyqt5 -i https://pypi.douban.com/simple然后安装pyqt相关…

对“云原生”的初印象

一、背景 最近因为在工作中以及一些技术博客中听的比较火的一个关键词 "云原生",于是产生了好奇,云原生到底是什么东西?自己对云原生也是一个纯小白,于是带着这个问题去好好了解一下,什么是"云原生&qu…

SystemVerilog基础:disable fork语句

相关阅读 SystemVerilog基础https://blog.csdn.net/weixin_45791458/category_12517449.html?spm1001.2014.3001.5482 一、进程的概念 在学习disable fork语句之前,首先的了解SystemVerilog中的进程概念:进程是一系列可以独立执行的一个或多个表达式。…

富芮坤FR8003硬件:VDDIO供电有工作不正常的情况从VBAT供电正常

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

IBM服务器刀箱Blade安装Hyper-V Server 2019 操作系统

案例:刀箱某一blade,例如 blade 5 安装 Hyper-V Server 2019 操作系统(安装进硬盘) 刀箱USB插入安装系统U盘,登录192.168... IBM BlandeCenter Restart Blande 5,如果Restart 没反应,那就 Power Off Blade 然后再 Power On 重启后进入BIOS界面设置usb存储为开机启动项 …

【大模型】本地部署DeepSeek-R1:8b大模型及搭建Open-WebUI交互页面

本地部署DeepSeek-R1:8b大模型 一、摘要及版本选择说明1.1 摘要1.2 版本选择 二、下载并安装Ollama三、运行DeepSeek-R1:8b大模型四、安装Open WebUI增强交互体验五、关闭Ollama开机自动启动六、DeepSeek大模型启停步骤 一、摘要及版本选择说明 1.1 摘要 作为一名对 AI 和生成…

6、使用one-api管理统一管理大模型,并开始使用本地大模型

文章目录 本节内容介绍集中接入:将大模型统一管理起来当使用了大模型代理大模型代理示例 开源模型:如何使用Hugging Face上的模型modelscope使用 pipeline 调用模型用底层实现调用模型流式输出 如何在项目中使用开源模型使用 LangChain使用集中接入开始使…

绕组电感 - Ansys Maxwell 磁通链与电流

在本博客中,我将演示如何使用 Ansys Maxwell 中磁瞬态求解器的磁通链和电流结果来计算绕组电感。Ansys Maxwell 磁瞬态求解器在场计算中考虑了涡流效应,我将展示一种使用磁通链和电流结果来计算绕组电感的简单方法。 实际上,电感是非线性的…

【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案

建筑设计公司在项目执行过程中,会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。 操作需求:为了方便内部管理和向客户交付完整的设计方案,公司需要将每个项目文件…

Formality:探针(Probe Point)的设置与使用

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 一般情况下,verify命令会对参考设计和实现设计所有匹配的比较点各自进行验证,但有些时候为了调试,可能需要验证参考设计和实现设…

Cherry Studio之DeepSeek联网/本地,建属于自己的AI助理!

上一篇文章,讲了DeepSeek-R1部署到本地的方法。这一篇文章,我们让DeepSeek再一次升级,通过图形化界面来交互,从而变成我们的AI助理,让DeepSeek R1发挥最大实力! 首选需要借助硅基流动的API接口&#xff0c…

HarmonyOS Next 方舟字节码文件格式介绍

在开发中,可读的编程语言要编译成二进制的字节码格式才能被机器识别。在HarmonyOS Next开发中,arkts会编译成方舟字节码。方舟字节码长什么样呢?我们以一个demo编译出的abc文件: 二进制就是长这样,怎么去理解呢&…

AMD 8845HS 780M核显部署本地deepseek大模型的性能

测试了一下笔记本电脑AMD 8845HS的780M核显是否能本地部署deepseek大模型。 测试软件环境:LM Studio 0.3.9 、Windows 11 24H2 硬件:荣耀X16笔记本 CPU:AMD 8845HS 显卡:780M核显,显存为共享内存自动分配模式&…