AVL 树 学习概要

    xiaoxiao2021-03-25  70

    一、AVL 树是什么?

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

    二、怎么实现的?

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

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

    (图片来自参考内容)

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

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

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

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

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

    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

    转载请注明原文地址: https://ju.6miu.com/read-40746.html

    最新回复(0)