AVL树的左单旋、右单旋、左右旋、右左旋
下面是情景剧,有三个角色,分别是root,pivot,和底节点。
图片引自:https://blog.****.net/u012361418/article/details/46535293
按照这三个节点从上到下节点的顺序,可以分为四种情况:分别称作左左型、右右型、左右型、右左型;
1.左左型(pivot是根节点的左节点,底节点是pivot的左节点)
这个时候我们把要进行的动作成为右单旋,因为似乎是顺时针旋转;(统一把顺时针称为右旋,逆时针称为左旋)
pivot对根节点说:
我现在是你的左节点;
我希望你做我的右节点,
这样刚好我原有的右节点,作你的左节点。
完美替代!!!
于是乎愉快了完成了调整~
2.右右型
这个时候需要把根节点进行向左旋转,称之为左旋;
pivot对根说:
我现在是你的右节点,
我想让你做我的左节点,
这样刚好我原有的左节点,做你的右节点;
又一次完美的旋转~
3.左右型
大家不要怕!不要逃~~~因为这一次终于有底节点的戏份了!!!(感动。。。。)
首先,底节点对pivot说:
我是你的右节点,
我想你作我的左节点,
这样我原有的左节点,刚好给你作右节点;
哈哈!!!
你猜怎么着??
现在变成左左型啦~
那接着之前第一种分析的情形就可以继续啦~
我还是在这里说一下吧。(毕竟这个时候原来的底节点变成新的Pivot了呢。。。。戏份陡增有木有。。)
这个时候新的pivot(原来的底节点)对根节点说:
我现在是你的左节点,
我想你做我的右节点,
这样我原来的右节点刚好做你的左节点!
到这里,就完美地成为AVL树啦~
4.右左型(右左旋)
底节点右旋,然后变成右右型后,根节点左旋;
这一次底节点的戏份也比较多~
首先是底节点对Pivot说:
我是你的左节点,
我想让你做我的右节点,
这样我的右节点刚好作你的左节点;
然后就变成右右型啦(此时底节点变成新的Pivot)
然后就是右右型的处理,这里就留给你练习吧~~