【查找】平衡二叉树

平衡二叉树

  1. 平衡二叉树(Balanced Binary Tree),简称平衡树(AVL树)――树上任一结点的左子树和右子树的高度之差不超过1。
  2. 结点的平衡因子 = 左子树高-右子树高。


调整最小不平衡子树


LL && RR

LR && RL


 查找效率分析

高为h的平衡二叉树最少有几个结点——递推求解

平衡二叉树的删除

具体删除步骤

①删除结点(方法同“二叉排序树”点这里

  • 若删除的结点是叶子,直接删
  • 若删除的结点只有一个子树,用子树顶替删除位置
  • 若删除的结点有两棵子树,用前驱(或后继)结点顶替,并转换为对前驱(或后继)结点的删除

②一路向上找到最小不平衡子树,找不到就完结撒花(算法结束)

③找最小不平衡子树下,“个头”最高的儿子、孙子结点

 

④根据孙子的位置,调整平衡(LL/RR/LR/RL)

  • 孙子在LL:儿子右单旋
  • 孙子在RR:儿子左单旋
  • 孙子在LR:孙子先左旋,再右旋
  • 孙子在RL:孙子先右旋,再左旋


⑤如果不平衡向上传导,继续②

  • 对最小不平衡子树的旋转可能导致树变矮,从而导致上层祖先不平衡(不平衡向上传递)

删除操作的时间复杂度

O(log_{2}N)

实例演示

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉淀体育生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值