数据结构-二叉平衡树

一.平衡二叉树

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

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

二.平衡二叉树的调整

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

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

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

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

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

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

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

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

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

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

第一次旋转(左旋转)

第二次旋转(右旋转)

RL旋转与LR旋转相似

相关推荐
浮灯Foden1 分钟前
算法-每日一题(DAY18)多数元素
开发语言·数据结构·c++·算法·leetcode·面试
violet-lz32 分钟前
数据结构八大排序:归并排序-原理+C语言实现+优化+面试题
c语言·数据结构·排序算法
如竟没有火炬1 小时前
全排列——交换的思想
开发语言·数据结构·python·算法·leetcode·深度优先
熬了夜的程序员3 小时前
【LeetCode】82. 删除排序链表中的重复元素 II
数据结构·算法·leetcode·链表·职场和发展·矩阵·深度优先
胖咕噜的稞达鸭4 小时前
AVL树手撕,超详细图文详解
c语言·开发语言·数据结构·c++·算法·visual studio
阿林学习计算机5 小时前
红黑树的实现
数据结构
豐儀麟阁贵6 小时前
4.4数组的基本操作
java·开发语言·数据结构·算法
无限进步_6 小时前
【C语言】在矩阵中高效查找数字的算法解析
c语言·开发语言·数据结构·c++·其他·算法·矩阵
Yupureki6 小时前
从零开始的C++学习生活 11:二叉搜索树全面解析
c语言·数据结构·c++·学习·visual studio
草莓工作室6 小时前
数据结构2:线性表1-线性表类型及其特点
c语言·数据结构