数据结构和算法-二叉排序树

news2024/9/21 14:32:26

文章目录

  • 二叉排序树
    • 总览
    • 二叉排序树的定义
    • 二叉排序树的查找
    • 二叉排序树的插入
    • 二叉排序树的构造
    • 二叉排序树的删除
      • 删除的是叶子节点
      • 删除的是只有左子树或者只有右子树的节点
      • 删除的是有左子树和右子树的节点
    • 查找效率分析
      • 查找成功
      • 查找失败
    • 小结

二叉排序树

总览

在这里插入图片描述

二叉排序树的定义

在这里插入图片描述

二叉排序树的查找

在这里插入图片描述
我们也可以用递归实现
在这里插入图片描述
但递归的最坏情况可能需要有h个函数调用栈帧,或者说h个函数同时执行
但循环的实现一直都是一个函数在执行

二叉排序树的插入

先查找找到插入的位置,然后mallloc一个新的空间,如果遇到与插入值一样的元素,则插入失败
函数参数是引用类型从而能够修改其值
在这里插入图片描述

二叉排序树的构造

首先T是空,会创造一个节点,其值和插入的值一样,这样就开始形成一颗树,接着插入过程和之前一样
在这里插入图片描述
不同序列对应的二叉排序树不一定相同,也不一定不同
在这里插入图片描述

二叉排序树的删除

删除的是叶子节点

直接删之后依然可以保存二叉树的特性
在这里插入图片描述

删除的是只有左子树或者只有右子树的节点

直接替代即可,此时依然满足,替换后,子树相对于父父树一定满足父树的相对于其父父树的性质
在这里插入图片描述
在这里插入图片描述

删除的是有左子树和右子树的节点

此时可以找到右子树的最小节点来替换(右子树的最左下节点)
在这里插入图片描述
在这里插入图片描述
此时可以找到左子树的最大节点来替换(左子树的最右下节点)
在这里插入图片描述
在这里插入图片描述

查找效率分析

查找成功

最坏的查找长度也是和这颗数的高度一样
在这里插入图片描述
如果使得二叉树的尽可能地平衡,那么二叉树的高度会越低
在这里插入图片描述

查找失败

查找失败时为落在空结点的位置,先补齐空结点
在这里插入图片描述

小结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泽攸科技SEM台式扫描电子显微镜

泽攸科技是一家国产的科学仪器公司,专注于研发、生产和销售原位电镜解决方案、扫描电镜整机、台阶仪、探针台等仪器。目前台式扫描电镜分为三个系列:ZEM15、ZEM18、ZEM20。 ZEM15台式扫描电镜: ZEM18台式扫描电镜: ZEM20台式扫描…

FA-238V (MHz范围晶体单元微型低轮廓SMD)

FA-238V晶振是EPSON推出的一款额定频率12MHz至15.999MHz的石英晶体谐振器,它能够实现高效、稳定的数据传输,外形尺寸(3.2 2.5 0.7mm)具有小型超薄、 稳定性好,这种微型化的设计不仅提升了设备的整体性能,…

网络安全知识图谱 图数据库介绍及语法

本体构建: 资产: 系统,软件 威胁: 攻击: 建模: 3个本体 5个实体类型 CWE漏洞库 http://cwe.mitre.org/data/downloads.html CPECP攻击模式分类库 http://capec.mitre.org/data/downloads.html CPE通用组件库 http:…

Java如何将中文转化为拼音

Java中可以使用第三方库pinyin4j来实现中文转拼音。 首先&#xff0c;需要引入pinyin4j的jar包&#xff0c;可以在pinyin4j的官方网站&#xff08;http://pinyin4j.sourceforge.net/&#xff09;下载&#xff0c;也可以通过Maven引入。 Maven引入依赖&#xff1a; <depend…

多表插入、删除操作(批量)——后端

多表插入 场景&#xff1a;当添加一个菜品时&#xff0c;还需要记录菜品的口味信息&#xff0c;因此需要对菜品表&#xff08;dish&#xff09;和口味表&#xff08;dish_flavor&#xff09;同时进行插入操作。 两个表的字段&#xff1a; 代码思路&#xff1a;由DishControll…

用JVS低代码实现业务流程的撤回和重新开始

在当今的数字化时代&#xff0c;业务流程的效率和准确性对于企业的运营至关重要。在实际业务场景中&#xff0c;我们可能需要处理一些复杂的流程&#xff0c;例如申请审批流程、合同签订流程等。这些流程在执行过程中可能会遇到各种情况&#xff0c;例如某个审批步骤需要重新审…

Spring Boot学习随笔- 文件上传和下载(在线打卡、附件下载、MultipartFile)

学习视频&#xff1a;【编程不良人】2021年SpringBoot最新最全教程 第十二章、文件上传、下载 文件上传 文件上传是指将文件从客户端计算机传输到服务器的过程。 上传思路 前端的上传页面&#xff1a;提交方式必须为post&#xff0c;enctype属性必须为multipart/form-data开发…

百度智能云上新:一手实测!0门槛、分钟级打造智能体

“大模型时代真正的价值在于AI原生应用” 继腾讯云推出高性能应用服务HAI&#xff0c;10分钟创建AIGC应用之后&#xff0c;百度云昨天在智算大会上也发布了AI云生应用平台AppBuilder&#xff0c;号称0门槛、分钟级打造智能体agent。AI赛道好不热闹。小编今天就带大家来实测一把…

全光谱护眼灯哪个牌子好?全光谱备考护眼台灯推荐

什么是全光谱&#xff1f;全光谱指的是光谱中包含紫外光、可见光、红外光的光谱曲线&#xff0c;并且在可见光部分中红绿蓝的比例与阳光近似&#xff0c;显色指数接近于100的光谱。太阳光的光谱可以称作全光谱&#xff0c;太阳光的色温是随着四季和早晚时间变化而变化&#xff…

芯知识 | 什么是语音芯片的32Mhz内部振荡及其应用优势

随着科技的飞速发展&#xff0c;语音芯片已经成为现代电子产品中不可或缺的一部分。而在这些芯片的技术参数中&#xff0c;我们常常可以看到“32Mhz内部振荡”这样的描述。那么&#xff0c;究竟什么是语音芯片的32Mhz内部振荡&#xff0c;它又为应用带来了哪些优势呢&#xff1…

Ubuntu 常用命令之 echo 命令用法介绍

echo 是一个在 Ubuntu 系统下常用的命令&#xff0c;主要用于在终端输出字符串或者变量。 echo 的基本语法 echo [option] [string]echo 命令的参数包括 -n&#xff1a;不输出结尾的换行符。-e&#xff1a;启用反斜杠转义字符。-E&#xff1a;禁用反斜杠转义&#xff08;这是…

论文降重方法同义词替换的效果对比与评价 快码论文

大家好&#xff0c;今天来聊聊论文降重方法同义词替换的效果对比与评价&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 标题&#xff1a;论文降重方法同义词替换的效果对比…

应用在净水器中杀菌消毒的UVC静态杀菌模组

净水器也叫净水机、水质净化器&#xff0c;是按对水的使用要求对水质进行深度过滤、净化处理的水处理设备。平时所讲的净水器&#xff0c;一般是指用作家庭使用的小型净化器。其技术核心为滤芯装置中的过滤膜&#xff0c;主要技术来源于超滤膜、RO反渗透膜、纳滤膜三种。 纯净…

计算机基础:网络基础

目录 ​​​​​​​一.网线制作 1.制作所需要工具 网线制作标准 ​编辑 2.水晶头使用 3.网线钳使用 4.视频教学 二.集线器、交换机介绍 1.OSI七层模型 2.TCP/IP四层参考模型 3.集线器、交换机。路由器介绍 集线器 交换机 路由器 区别 三.路由器的配置 1.路由器设…

OpenAI 官方 Prompt 工程指南:写好 Prompt 的六个策略

其实一直有很多人问我&#xff0c;Prompt 要怎么写效果才好&#xff0c;有没有模板。 我每次都会说&#xff0c;能清晰的表达你的想法&#xff0c;才是最重要的&#xff0c;各种技巧都是其次。但是&#xff0c;我还是希望发给他们一些靠谱的文档。 但是&#xff0c;网上各种所…

易基因: RNA m7G甲基化修饰的生物学功能及其在癌症中的作用|综述

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 m7G修饰是RNA转录后修饰之一&#xff0c;存在于许多不同类型的RNA中。通过对RNA中m7G修饰的准确鉴定&#xff0c;揭示了m7G在基因表达调控和不同生理功能中的作用。越来越多的证据表明&a…

nginx转发ingress-nginx问题记录

背景 想直接通过域名访问k8s上的服务. 想到k8s上可以直接通过ingress配置. 不过ingress默认启动的端口3xxxxx. 一般不可能让用户访问我们的服务加上端口. 所以现在要解决直接通过80端口访问ingress的问题. 方案 修改ingress-nginx端口(这个是在网上搜到的方案, 但未选择) 这…

C/C++ string.h库中的memcpy()和memmove()

不能把一个数组赋给另一个数组&#xff0c;所以要通过循环把数组中的每个元素赋给另一个数组相应的元素。有一个例外的情况是&#xff1a;使用strcpy()和strncpy()函数来处理字符数组。 memcpy()和memmove()函数提供类似的方法处理任意类型的数组&#xff0c;下面是这两个寒素的…

idea插件在线和离线安装

在线安装 idea在线安装插件比较简单明了&#xff0c;打开setting&#xff08;或者快捷键ctrlalts&#xff09;&#xff0c;找到plugins查找要安装的插件&#xff0c;点击安装&#xff0c;重启idea 离线安装 在官网下载插件安装包 jetbrains官网插件地址 打开idea&#xff0c…

使用HTTP协议有哪些风险?HTTP与HTTPS的区别是什么

作为两种常见的网络协议&#xff0c;HTTP和HTTPS都是用于在浏览器和服务器之间传输数据的。然而在保障数据安全性方面&#xff0c;HTTPS远远优于HTTP。在网络安全愈发重要的当下&#xff0c;HTTP协议的不安全性使得其逐渐被淘汰弃用。那么使用HTTP协议有哪些风险呢&#xff1f;…