AVLTree深度剖析(双旋)

在上一篇文章中我们提到了,单旋的情况(无论是左单旋还是右单旋),都仅仅适用于绝对的左边高或者绝对的右边高

AVLTree深度剖析(双旋)_第1张图片

AVLTree深度剖析(双旋)_第2张图片

b插入,高度变为h+1,我们可以来试试单旋会变成什么样子

AVLTree深度剖析(双旋)_第3张图片

 旋完之后,形成了对称关系,我们右单旋之后,在用一次左单旋,发现又回去了!!

左右双旋解决

AVLTree深度剖析(双旋)_第4张图片

 我们先对30这个节点进行一个左单旋

AVLTree深度剖析(双旋)_第5张图片

 我们这时候在对90进行一个右单旋

AVLTree深度剖析(双旋)_第6张图片

我们还有可能是在c插入的,但是还是一样的旋转过程,无非就是平衡因子的更新不同

AVLTree深度剖析(双旋)_第7张图片

 还有一种极端情况  h==0的情况   但是旋转的过程都是不变的

AVLTree深度剖析(双旋)_第8张图片

 平衡因子都是0

 -------------------------------------------------------------------------------------------------------------------------

我们在这里的三种情况下,旋转的过程都是一样的,但是最后平衡因子的更新却是不同的,所以我们需要知道如何去区分是那种情况,好进行对应的平衡因子更新

AVLTree深度剖析(双旋)_第9张图片

AVLTree深度剖析(双旋)_第10张图片

 AVLTree深度剖析(双旋)_第11张图片

 ----------------------------------------------------------------------------------------------------------------------------

右左单旋

情况一:

AVLTree深度剖析(双旋)_第12张图片

情况二:

 AVLTree深度剖析(双旋)_第13张图片

 情况三:

AVLTree深度剖析(双旋)_第14张图片

AVLTree深度剖析(双旋)_第15张图片

 这里就不做多解释了!!!

AVLTree深度剖析(双旋)_第16张图片

你可能感兴趣的:(数据结构高阶,数据结构)