美文网首页
AVL树的实现

AVL树的实现

作者: 王炎杰 | 来源:发表于2019-11-25 17:21 被阅读0次

    https://www.jianshu.com/p/65c90aa1236d

    https://www.cnblogs.com/vamei/archive/2013/03/21/2964092.html

    关于AVL树的实现,主要借鉴上面两篇文章

    但需要指出一点是,这两篇文章在什么时候使用左单旋转,什么时候使用右单旋转上面的表述都不清晰。
    虽然给出的代码没有问题,但是不知其所以然。

    我想了很久,总算是得出了一个比较形象的理解。

    关于往哪个方向旋转的问题。
    如果是树的左边失衡,就往右边转。想象一个天平要保持平衡,左边重了,那就把左边的东西往右边放。右边重了,就把东西往右边放一放。

    关于是单旋转还是双旋转的问题。
    左旋转时,如果插入点在旋转点的子节点(左旋转看右边的子节点)的左子树上,那就双旋转,否则单旋转。
    右旋转时,如果插入点在旋转点的子节点(右旋转看左边的子节点)的右子树上,那就双旋转,否则单旋转。

    总结一下,可以这样说:同侧双,异侧单。

    这个“旋转点的子节点”是在插入的叶节点向根节点回溯的路径上。

    本文作者: 王炎杰
    本文链接: https://www.jianshu.com/p/c62dfd013b38
    版权声明: 转载请注明出处!

    相关文章

      网友评论

          本文标题:AVL树的实现

          本文链接:https://www.haomeiwen.com/subject/xlujwctx.html