【数据结构-7.4 查找】平衡二叉树的删除

一、平衡二叉树的删除步骤

  • 平衡二叉树的删除操作: 删除结点后,要保持二叉排序树的特性不变(左<中<右);若删除结点导致不平衡,则需要调整平衡
  • 平衡二叉树的删除操作具体步骤 :
    (1)删除结点(方法同"二叉排序树")
    (2)一路向北找到最小不平衡子树,找不到就完结撒花
    (3)找最小不平衡子树下,"个头"最高的儿子、孙子
    (4)根据孙子的位置,调整平衡(LL/RR/LR/RL)
    (5)如果不平衡向上传导,继续(2)

二、AVL树的删除操作案例1(删除叶子节点-没有失衡)

(1)删除叶子节点

(2)向北查找,发现已经平衡,流程结束

三、AVL树的删除操作案例2(删除叶子节点-失衡)

(1)删除叶子节点

(2)删除叶子节点;一路向北找到最小不平衡子树


(3)找最小不平衡子树下,"个头"最高的儿子、孙子

(4)根据孙子的位置,调整平衡

(5)最小不平衡子树恢复平衡

三、AVL树的删除操作案例3(删除叶子节点-不平衡向上传导)

(1)删除叶子节点

(2)删除叶子节点;一路向北找到最小不平衡子树

(3)最小不平衡子树恢复平衡

(4)不平衡向上传导

(5)不平衡向上传导,二次调整

四、总结

相关推荐
hold?fish:palm2 小时前
24 回文链表
数据结构·c++·链表
qeen876 小时前
【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
数据结构·c++·算法
冻柠檬飞冰走茶6 小时前
PTA基础编程题目集 7-35有理数均值(C++语言实现)
开发语言·数据结构·c++·算法·均值算法
Nil2088 小时前
leetcode 189轮转数组
数据结构·算法·leetcode
依然鸣9 小时前
PTA团体程序设计天梯赛L1真题讲解L1-085-088
数据结构·c++·经验分享·算法·深度优先·pat考试
Brilliantwxx10 小时前
【算法从零到千】【51-54】逆序对(分治+递归算法)
数据结构·算法·排序算法
小星星闪亮登场10 小时前
2026河南萌新联赛第四场--南阳理工学院
数据结构·算法·贪心算法·动态规划·哈希算法·广度优先
土司大王10 小时前
LeetCode hot100——两数之和
数据结构·算法·leetcode
wabs66611 小时前
关于字符串【力扣344.反转字符串的思考】
数据结构·算法·leetcode
LuminousCPP11 小时前
数据结构基础篇(二):顺序表与链表全方位对比|从内存布局到 CPU 缓存理解底层差异
c语言·数据结构·经验分享·链表·缓存