数据结构-二叉平衡树

一.平衡二叉树

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

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

二.平衡二叉树的调整

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

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

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

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

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

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

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

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

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

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

第一次旋转(左旋转)

第二次旋转(右旋转)

RL旋转与LR旋转相似

相关推荐
夜不会漫长11 小时前
C++:红黑树
数据结构·算法
冻柠檬飞冰走茶14 小时前
PTA刷题集之Airline Routes(C语言实现)
c语言·开发语言·数据结构·算法
736c14 小时前
固件开发岗算法
数据结构·算法
冻柠檬飞冰走茶15 小时前
PTA刷题集之Battle Over Cities - Hard Version(C语言实现)
c语言·开发语言·数据结构·算法
PaperAccept20 小时前
【研知有术论文发表】材料科学一区期刊,影响因子30+的纳米科技SCI,审稿严格但有效率
大数据·数据结构·科技·量子计算
Tairitsu_H20 小时前
[C++高阶数据结构·图论下] 最短路径:为什么“挑最小的”一定正确?
数据结构·c++·图论
Tairitsu_H1 天前
[C++高阶数据结构·图论上] 最小生成树:为什么“选边”和“选点”是两条路?
数据结构·c++·图论·最小生成树
D e re k ZH2 天前
C++ 并发、未定义行为与工程化难点(No 3)
数据结构·c++·算法·面试
La Pulga2 天前
【FreeRTOS源码学习笔记】链表的实现
数据结构·笔记·stm32·mcu·链表·嵌入式·freertos
番茄味城市甜菜2 天前
数据结构:双向链表实现,链表与顺序表的对比
数据结构·链表