AVL树 平衡二叉树 简介及实现原理

平衡二叉树

平衡树是计算机科学中的一类数据结构。 平衡树是计算机科学中的一类改进的二叉查找树。在这里,平衡指所有叶子的深度趋于平衡,更广义的是指在树上所有可能查找的均摊复杂度偏低。

AVL树

AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。

平衡因子:

是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1、0或 -1的节点被认为是平衡的。带有平衡因子 -2或2的节点被认为是不平衡的,并需要重新平衡这个树,也就是需要进行旋转操作

旋转步骤:

转载图片,这是我所发现的比较详细的旋转说明:

《AVL树 平衡二叉树 简介及实现原理》

上图补充:

情况1,3是需要旋转的节点的子节点只有一个节点的情况。

情况2,4是需要旋转的节点有左/右子节点的情况,需要转换下左/右子节点的连接。

情况5-8是因为根节点左侧的平衡因子必须>=0,右侧的平衡因子必须<=0,如果有像5-8这种情况,必须进行两步旋转,第一步将平衡因子调整至符合规范,第二步对于平衡因子=2 or -2的节点进行旋转。

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