数据结构——平衡二叉树

在学习二叉树这一部分的时候,觉得平衡二叉树的建立,以及调整还是比较复杂的,看了一些博客和视频,发现了比较好的方法,这里总结一下。



这一部分,首先对平衡二叉树做一个简单的介绍,以及插入调整的几种类型,这些基本所有的书上都讲到了。(了解的直接略过)

平衡二叉树定义

  • 平衡二叉树(AVL树):任意节点的左、右子树高度差的绝对值不超过1。
  • 平衡因子:节点左子树和右子树的高度差,平衡二叉树的平衡因子只能为 -1、0、1.

平衡二叉树插入

  • 二叉排序树保证平衡的基本思想:每当插入或删除节点时,首先要检查是否会导致不平衡。① 如果导致了不平衡,则先找到插入路径上离插入节点最近的平衡因子绝对值大于1的节点A;② 再对以A为根的子树,在保持二叉排序树特性的前提下,调整各节点位置关系,重新达到平衡。

  • 注意:每次调整的对象都是最小不平衡子树。

  • 一般可将失去平衡后进行调整的规律归纳为以下四种情况:

(1)LL平衡旋转(右单旋转)

(2)RR平衡旋转(左单旋转)

(3)LR平衡旋转(先左后右双旋转)

(4)RL平衡旋转(先右后左双旋转)


具体的插入和调整过程讲解(重点)

其实无论是上面的哪一种情况,调整过程都是以下三个步骤:

  1. 找到三个要调整的节点。
  2. 中序排序,找到根、左、右。
  3. 调整。

下面通过实际的例子来说明(画图不方便,就手写了)
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值