STL之AVL树

AVL树是带有额外平衡条件的二叉搜索树,确保树的深度为O(logN)。插入操作可能导致不平衡,此时AVL树会在最深不平衡节点处调整,分为外侧插入(单旋转)和内侧插入(双旋转)两种情况。
摘要由CSDN通过智能技术生成
关联式容器
之所以说是关联式容器,每笔数据都有一个键值和一个实值,当元素插入关联式容器时,容器会按照键值大小,
依据特定规则(set,multiset,map,multimap是红黑树,hash是hash表)将元素放在特定位置;
所以关联式容器就不会有push_back( )  pop_back( ) push_front( ) pop_front( )等操作;

首先了解一下树的深度和节点的高度,定义:根节点至另外一个节点所经过的边的条数,称为路径长度;从根节点到树的叶子结点所经过的最大路径长度即为树的深度;
从一个节点,向下到达它的叶子结点的最大路径长度称为是该节点的高度;

AVL树介绍
因为二叉搜索树在某种条件下是依然会造成性能的下降,而AVL树则是加上了额外平衡条件的二叉搜索树,起平衡条件是为了树的深度维持在O(logN),但是一般的平衡条件是每个节点的左右子树高度相同,这个太过严格了,所以,AVL树退而求其次,只要求任意一个节点的左右子树的高度差不超过1;
插入操作,AVL树的重点在于其插入操作,如果一个插入操作不会引起原有树结构的不平衡ÿ
C++ STL中没有直接提供二叉搜索树的实现,但STL中有一些关于树的容器,比如set和map,它们底层的实现就是基于红黑树(一种平衡二叉搜索树)的。你可以使用这些容器来实现二叉搜索树的功能。关于二叉搜索树的一些知识,比如二叉树的遍历、迭代、线索二叉树、堆、Huffman编码、AVL树等都可以在STL中找到相应的实现。 二叉搜索树的查找可以通过比较根节点的值和目标值的大小来判断是往左子树还是往右子树查找,并重复这个过程直到找到目标值或者遍历到叶子节点为止。常规实现使用循环来实现查找,递归实现使用递归函数来查找。 二叉搜索树的插入操作也可以通过递归或循环来实现,根据目标值和当前节点的值的大小关系来决定是往左子树还是往右子树插入新节点。 STL中的二叉搜索树容器如set和map提供了插入、删除和查找等功能,并且保持了二叉搜索树的性质。你可以使用这些容器来处理二叉搜索树相关的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C++ STL 数据结构 树](https://download.csdn.net/download/xinxipan/3008948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【C++ STL】-- 二叉搜索树](https://blog.csdn.net/weixin_64609308/article/details/128018280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值