平衡二叉排序树算法 四种情况详解

本文详细讲解AVL平衡二叉树算法。

 

废话少说,我们知道有四种情况需要平衡,其实每一种情况还有一些需要考虑的细节。这就是为什么我上篇中有疑问的原因,不知道的同学可以参考上一篇

 

下面我将根据代码扩展讲解四种情况,这样大家就能明白为什么LeftBalance中会需要判断rd->bf了。

 

 

第一种情况,如图1.1

          《平衡二叉排序树算法 四种情况详解》

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   图 1.1                                                              1.2

这种情况最简单,只需通过一次左旋就搞定了,结果如图1.2

 

下面注意了,第一种情况还有扩展哦,上次我就在这吃了亏,哈哈。

如图1.31.4

 《平衡二叉排序树算法 四种情况详解》

 

        图 1.3                                         1.4

 

都是在A的右子树的右子树上插入节点。

 

上面三种情况对应RightBalance函数中case RH分支,只需进行一次左旋即可。

 

 《平衡二叉排序树算法 四种情况详解》

       

     图1.3旋转结果                                                              1.4旋转 结果

 

 

第二种情况,如图1.5

《平衡二叉排序树算法 四种情况详解》 

                                                         1.5

 

知道R啥意思吧?

 

第二种情况扩展,总共有两种,如图1.61.7

 

扩展1

 

 《平衡二叉排序树算法 四种情况详解》

                              1.6

扩展2

《平衡二叉排序树算法 四种情况详解》

                                                             1.7

 

其实大家可以发现扩展1和扩展2就是在C的左孩子和右孩子之间徘徊。

 

第二种情况对应RightBalance函数中case LH分支,需进行两次旋转,先右旋再左旋。

 

到这终于就解释了我上一篇我提的疑问,为什么case LH中还需判断rd->bf呢?观察第二

 

种情况及其扩展我们就显而易见了。

 

 

 

下面介绍第三种情况,第三种情况和第一种对应,如图1.8

《平衡二叉排序树算法 四种情况详解》

                                                    1.8

 

对应第一种情况只需进行一次右旋。

 

对应LeftBalance函数中的case LH分支语句。

 

 

同理,当然也有两个扩展啦!如图1.92.0

 《平衡二叉排序树算法 四种情况详解》

                                                           1.9

《平衡二叉排序树算法 四种情况详解》 

                                                             2.0

 

 

哎,终于到第四种情况了,虽然道理简单,打出来却不容易啊。

 

 

第四种情况和第二种情况对应,要进行两次旋转,如图2.1.

 

 

 

先左旋再右旋。

 

 

2个扩展如图2.12.2

 《平衡二叉排序树算法 四种情况详解》

                                                           2.1

 

下面就是改变了D的位置。

 《平衡二叉排序树算法 四种情况详解》

                                                           2.2

 

第四种情况对应LeftBalance函数总case RH分支语句,同样通过第四种情况以及扩展可以很好的了解为什么会要判断rd->bf平衡因子了。

 

 

 

看完了四种情况,我想大家也应该对平衡二叉树的情况有了更加深入的了解了吧。

 

当然上面的四种情况是我在分析上一篇上传的代码总结出的,代码不同,具体考虑的就不一样了,仅供参考。

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