欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

AVL树学习笔记

发布时间:2024/4/17 60 豆豆
生活随笔 收集整理的这篇文章主要介绍了 AVL树学习笔记 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

AVL树本质上还是一棵二叉搜索树(因此读者可以看到我后面的代码是继承自二叉搜索树的),它的特点是:

  • 本身首先是一棵二叉搜索树。

  • 带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。

  • AVL树的查找平均时间复杂度要比二叉搜索树低——它是O(logN)。

     

    旋转操作:

    AVL樹是一顆平衡樹,其左右子樹的高度差不會超過一層。爲了保持這一性質,採用旋轉節點的方式來降低高度。

    如下圖,紅色表示新插入的節點,一共4种情況:

    • 左左:節點1插入到左子樹的左節點,導致節點5不平衡。

     

    實際上我們只需要關心節點1、3、5,根據二叉搜索樹的性質(左 < 中 < 右),所以祇有節點3才可以作為父節點,於是將節點5繞節點3進行一次左旋,達到平衡。

     

    • 右右:和左左類似,可以通過一次右旋來實現平衡,如下圖:

     

     

    • 左右:這种情況光旋轉失衡的節點5是不夠的,因爲節點3是無法成爲父節點的,祇有節點4才有可能。

     

    所以先把節點3右旋以使節點4居中,再將節點5左旋,共兩次旋轉實現平衡。

     

    • 右左:和左右的情況類似,也是兩次,先左旋后右旋。

     

    图片出处:http://www.th7.cn/Program/net/201306/140050.shtml

     

    代码尚在酝酿中。

    转载于:https://www.cnblogs.com/IT-nerd/p/3477696.html

    总结

    以上是生活随笔为你收集整理的AVL树学习笔记的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。