AVL 树 学习概要

一、AVL 树是什么?

AVL是一种自平衡的二叉查找树,最大的特点是AVL树任意两个节点的高度差最大为1。什么?你问我二叉查找树是啥?拉黑吧有事漂流瓶联系吧。。。那么请你先去看看什么是二叉查找树在来看AVL吧。

二、怎么实现的?

当然实在二叉树插入或删除数据的时候进行一些 平衡 操作啦。

在AVL树中插入或删除一个节点,使得二叉树失去平衡分为四种状态。

(图片来自参考内容)

《AVL 树 学习概要》

1、一个树(可能是子数)的(ROOT) 左子树(L1) 的 左子树(L2) 下的 节点 导致 失去平衡 ,称作 LL:

《AVL 树 学习概要》

2、一个树(可能是子数)的(ROOT) 左子树(L1) 的 右子树(R1) 下的 节点 导致 失去平衡 ,称作 LR

《AVL 树 学习概要》

3、一个树(可能是子数)的(ROOT) 右子树(R1) 的 左子树(L2) 下的 节点 导致 失去平衡 ,称作 RL

《AVL 树 学习概要》

4、一个树(可能是子数)的(ROOT) 右子树(R1) 的 右子树(R2) 下的 节点 导致 失去平衡 ,称作 RR

《AVL 树 学习概要》

那么接下来就是 递归的 对失去平衡树(及其父节点为根的树) 的旋转工作。

1、 LL 情况:围绕L1作 右旋

ROOT.left = L2

L1.left = L2.right

L2.right = L1

2、LR 情况:

首先:围绕 L1 作 左旋(RR)

再:围绕 ROOT 作 右旋(LL)

3、RL 情况:

首先:围绕 R1 作 右旋(LL)

再:围绕 ROOT 作 左旋(RR)

4、RR 情况:围绕 R1 作 左旋

ROOT.right = R2

R1.right = R2.left

R2.left = R1

参考:

http://www.cnblogs.com/skywang12345/p/3576969.html

    原文作者:AVL树
    原文地址: https://blog.csdn.net/han_dada/article/details/61916521
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞