数据结构-二叉平衡树

一.平衡二叉树

二叉搜索树插入的次序不同导致不同的深度和平均查找长度ASL

左右子树高度差不超过绝对值1的二叉搜索是二叉平衡树

二.平衡二叉树的调整

在右子树的右子树上的插入做RR插入

把被破坏节点的右子树变成跟节点并把这个右子树的左子树挂载到原来被破坏的结点的右子树,被破坏的节点作为右儿子

插入节点在被破坏者右边的右边是RR

不一定插在某个节点的右边

在左子树的左子树上的插入做LL插入

把被破坏节点的左子树变成跟节点并把这个左子树的右子树挂载到原来被破坏的结点的左子树,被破坏的节点作为左儿子

插入节点在被破坏者左边的左边是LL

两个节点的平衡性被破坏了,只要考虑最下面的节点这个节点平衡了上面节点自然就平衡了

被破坏结点左边的右边插入,叫做LR插入

所以需要关注May,Aug,Mar三个结点将这三个结点的中间值结点变为跟结点,这里的中间结点是Mar所以需要先将提上来,左旋转,然后再进行右旋转

第一次旋转(左旋转)

第二次旋转(右旋转)

RL旋转与LR旋转相似

相关推荐
进击的荆棘1 小时前
优选算法——双指针
数据结构·算法
努力努力再努力wz1 小时前
【Linux网络系列】:JSON+HTTP,用C++手搓一个web计算器服务器!
java·linux·运维·服务器·c语言·数据结构·c++
魂梦翩跹如雨1 小时前
死磕排序算法:手撕快速排序的四种姿势(Hoare、挖坑、前后指针 + 非递归)
java·数据结构·算法
鱼跃鹰飞11 小时前
Leetcode347:前K个高频元素
数据结构·算法·leetcode·面试
好评12412 小时前
【C++】二叉搜索树(BST):从原理到实现
数据结构·c++·二叉树·二叉搜索树
程序猿炎义12 小时前
【Easy-VectorDB】Faiss数据结构与索引类型
数据结构·算法·faiss
jiaguangqingpanda14 小时前
Day24-20260120
java·开发语言·数据结构
ValhallaCoder14 小时前
Day53-图论
数据结构·python·算法·图论
C雨后彩虹14 小时前
羊、狼、农夫过河
java·数据结构·算法·华为·面试
Elastic 中国社区官方博客15 小时前
使用瑞士风格哈希表实现更快的 ES|QL 统计
大数据·数据结构·sql·elasticsearch·搜索引擎·全文检索·散列表