【C++之AVL树旋转操作的详细图解】

C++学习笔记---022

  • C++之AVL树旋转操作的详细图解
    • 1、AVL树的简单介绍
      • 1.1、基本概念
      • 1.2、平衡因子
      • 1.3、AVL树的特性
    • 2、C++中pair的介绍
      • 2.1、定义和初始化
      • 2.2、访问元素
      • 2.3、作为容器的元素
      • 2.4、作为函数的返回值
    • 3、AVL树节点的定义
    • 4、AVL的插入规则探究
    • 5、AVL树的旋转操作
      • 5.1、RotateL左旋操作
      • 5.2、RotateR右旋操作
      • 5.3、不单纯的右边高或左边高的情况:LR双旋 或 RL双旋
    • 6、AVL树的性能分析

C++之AVL树旋转操作的详细图解

前言:
前面篇章学习了C++对于map的认知和了解,接下来继续学习,C++的AVL树旋转插入操作等知识。
/知识点汇总/

1、AVL树的简单介绍

1.1、基本概念

AVL树(Adelson-Velsky和Landis发明的树)是一种自平衡的二叉搜索树(BST)。它在二叉搜索树的基础上添加了平衡的条件,以确保树的搜索、插入和删除操作都能保持较高的效率。
AVL树是一种特殊的二叉搜索树,其中每个节点的左子树和右子树的高度差(平衡因子)的绝对值不超过1。这个特性使得AVL树在插入或删除节点后,通过一系列的旋转操作可以保持其平衡性。

1.2、平衡因子

平衡因子:对于AVL树中的每个节点,其平衡因子定义为左子树的高度减去右子树的高度。平衡因子的值只能是-1、0或1。

1.3、AVL树的特性

它的左右子树都是AVL树
左右子树高度之差(简称平衡因子)的绝对值不超过1(-1 / 0 / 1)
如果一棵二叉搜索树是高度平衡的,它就是AVL树。如果它有n个结点,其高度可保持在 O ( l o g 2 n ) O(log_2 n) O(log2n),搜索时间复杂度O( l o g 2 n log_2 n log2n)。

2、C++中pair的介绍

在C++中,std::pair 是一个模板类,用于将两个值组合成一个单一的对象。这通常用于需要同时处理两个值的情况,例如在STL(Standard Template Library)中的 std::map,其元素就是键值对(key-value pairs)。

2.1、定义和初始化

可以直接使用花括号初始化一个 std::pair 对象,或者使用 make_pair 函数来创建。

std::pair<int, std::string> p1(1, "one");  // 直接初始化  
std::pair<int, std::string> p2 = {2, "two"};  // 使用花括号初始化  
std::pair<int, std::string> p3 = std

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

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

相关文章

语音识别--单声道转换与降采样

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

数据结构学习/复习8--树与二叉树的概念与基本性质练习

一、树 1.概念 2.树的表示 二、二叉树 1.二叉树的概念 2.与性质相关的题

OpenHarmony实战开发-如何使用Web组件加载页面

页面加载是Web组件的基本功能。根据页面加载数据来源可以分为三种常用场景&#xff0c;包括加载网络页面、加载本地页面、加载HTML格式的富文本数据。 页面加载过程中&#xff0c;若涉及网络资源获取&#xff0c;需要配置ohos.permission.INTERNET网络访问权限。 加载网络页面…

如何在一个高并发的应用中进行调试和测试!

在一个高并发的应用中进行调试和测试是一项挑战性的工作&#xff0c;因为它涉及到了系统性能、资源竞争、同步机制以及潜在的并发编程错误等多个方面。下面我会详细解释如何在高并发环境中进行调试和测试&#xff0c;并提供相应的策略和技术。 1. 单元测试 在多线程环境下&…

从线索到成交:HubSpot全渠道销售流程的精准打磨

在当今数字化时代&#xff0c;企业面临着越来越复杂的市场环境和激烈的竞争压力。在这样的背景下&#xff0c;如何利用科技手段提升营销和销售效率&#xff0c;拓展客户获客渠道&#xff0c;成为了企业发展的关键之道。作为HubSpot合作伙伴&#xff0c;我们深谙全渠道营销与销售…

multipass launch失败:launch failed: Remote ““ is unknown or unreachable.

具体问题情况如下&#xff1a; C:\WINDOWS\system32>multipass launch --name my-vm 20.04launch failed: Remote "" is unknown or unreachable.​C:\WINDOWS\system32>multipass lsNo instances found.​C:\WINDOWS\system32>multipass startlaunch fail…

谁能取代迈巴赫,征服互联网安全大佬周鸿祎?

‍作者 |老缅 编辑 |德新 4月18日&#xff0c;「周鸿祎卖车」登上了微博热搜。这位360创始人、董事长发微博称&#xff1a;自己做了一个艰难的决定&#xff0c;将把陪伴9年的迈巴赫600给卖掉。 随后&#xff0c;他解释道&#xff1a;「这是因为我需要体验新一代车的感觉。古人…

虚拟化界的强强联手:VirtIO与GPU虚拟化的完美结合

近距离了解 VirtIO 和 GPU 虚拟化 这是一篇 Linaro 开发团队项目组的科普文章。我们在处理器虚拟化项目中&#xff0c;经常会遇到 VirtIO 相关的问题&#xff1b;比如运行 Andriod 系统的时候需要运行 VirtIO 组件。‍‍‍随着 Cassini 项目和 SOAFEE&#xff08;嵌入式边缘可扩…

Django REST Framework框架

Django REST Framework框架 【1】概述 Django REST Framework&#xff08;简称DRF&#xff09;是基于Django Web框架的一个开源的Web API框架。它提供了一组用于快速构建Web API的工具和库&#xff0c;包括序列化器、认证、权限、视图、路由和文档化等功能。 DRF的主要特点包括…

HFSS学习-day1-T形波导的内场分析和优化设计

入门实例--T形波导的内场分析和优化设计 HFSS--此实例详细步骤1.创建项目2.设置求解类型3.设置与建模相关的一些信息设置默认的建模长度单位 4.创建T形模型的三个臂基本参数端口激励进行复制 5.创建被挖去的部分设置正确的边界条件和端口激励方式添加求解设置添加扫频项检查一下…

x86汇编伪指令align和p2align

1.align 表达式 align bound 表达式说明 功能&#xff1a;地址对齐的伪指令&#xff0c;用来指定符号的对齐方式。. 作用范围&#xff1a;只限于紧跟它的那条指令或者数据&#xff0c;而接下来的指令或者数据的地址由上一条指令的地址和其长度决定。 2. p2align 表达式如下&…

大模型_基于医疗领域用lora微调ChatDoctor模型

文章目录 ChatDoctor目标方法结果结论收集和准备医患对话数据集创建外部知识数据库具有知识大脑的自主聊天医生的开发模型培训结果数据和模型&#xff1a; 微调推理 ChatDoctor 目标 这项研究的主要目的是通过创建一个在医学建议中具有更高准确性的专业语言模型&#xff0c;来…

Mysql 行格式 DYNAMIC 和 COMPACT 区别

MySQL的InnoDB存储引擎提供了多种行格式&#xff0c;其中DYNAMIC和COMPACT是两种常见的选择。这两种行格式在处理数据时有一些关键的区别&#xff0c;尤其是在管理大字段&#xff08;如BLOB、TEXT和大的VARCHAR字段&#xff09;方面。以下是DYNAMIC和COMPACT行格式的主要区别&a…

【毕业设计】基于SSM的运动用品商城的设计与实现

1.项目介绍 在这个日益数字化和信息化的时代&#xff0c;随着人们购物习惯的转变&#xff0c;传统的实体商店已经无法满足人们日益增长的在线购物需求。因此&#xff0c;基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架的运动用品商城项目应运而生&#xff0…

最原理的一集——Mathtype公式编号设置(Mathtype7.8+Word)

版本 Mathtype7.8Office2019 Word 读完本文你将会 随心所欲&#xff0c;想怎么给公式编号就怎么给公式编号&#xff0c;想从(X.1)开始&#xff0c;就从(X.1)开始大概了解Mathtype公式设置原理给作者点赞 如果你想自己跟着文章做的话 请不要在自己的论文里边直接操作&#…

已解决ArrayTypeMismatchException异常的正确解决方法,亲测有效!!!

已解决ArrayTypeMismatchException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 示例报错代码&#xff1a; 解决思路 解决方法 示例解决代码&#xff1a; 总结 问题分析 在Java编程中&#xff0c;ArrayTypeMi…

创造美的同时,也创造了等量的丑

人们都喜欢美的事物&#xff0c;讨厌丑的事物。如果说有人喜欢丑的事物&#xff0c;那是因为这些事物在他看来是美的。 因此&#xff0c;人们在不断地创造美。然而&#xff0c;在创造美的同时&#xff0c;其实也创造了等量的丑&#xff0c;不仅仅是因为创造美的过程会带来很多…

【6D位姿估计】数据集汇总 BOP

前言 BOP是6D位姿估计基准&#xff0c;汇总整理了多个数据集&#xff0c;还举行挑战赛&#xff0c;相关报告被CVPR2024接受和认可。 它提供3D物体模型和RGB-D图像&#xff0c;其中标注信息包括6D位姿、2D边界框和2D蒙版等。 包含数据集&#xff1a;LM 、LM-O 、T-LESS 、IT…

Python数据清洗与可视化实践:国际旅游收入数据分析

文章目录 概要整体流程名词解释NumPyPandasMatplotlibre 技术细节数据清洗可视化 小结 概要 在本篇博客中&#xff0c;我们将通过一个实际的案例&#xff0c;演示如何使用Python进行数据清洗和可视化&#xff0c;以分析国际旅游收入数据。我们将使用Python中的Pandas库来进行数…

磐石云最版本使用教程

磐石云外呼系统是一款集成了呼叫平台、电话线路和话术系统的软件&#xff0c;旨在提高企业的电话营销效率。以下是磐石云外呼系统的基本操作步骤&#xff1a; 安装和配置&#xff1a; 首先需要在Linux操作系统上安装磐石云外呼系统&#xff0c;通常需要至少4核CPU、8GB内存以及…