AVL樹的左單旋、右單旋、左右旋、右左旋
下面是情景劇,有三個角色,分別是root,pivot,和底節點。
圖片引自:https://blog.csdn.net/u012361418/article/details/46535293
按照這三個節點從上到下節點的順序,可以分為四種情況:分別稱作左左型、右右型、左右型、右左型;
1.左左型(pivot是根節點的左節點,底節點是pivot的左節點)
這個時候我們把要進行的動作成為右單旋,因為似乎是順時針旋轉;(統一把順時針稱為右旋,逆時針稱為左旋)
pivot對根節點說:
我現在是你的左節點;
我希望你做我的右節點,
這樣剛好我原有的右節點,作你的左節點。
完美替代!!!
於是乎愉快了完成了調整~
2.右右型
這個時候需要把根節點進行向左旋轉,稱之為左旋;
pivot對根說:
我現在是你的右節點,
我想讓你做我的左節點,
這樣剛好我原有的左節點,做你的右節點;
又一次完美的旋轉~
3.左右型
大家不要怕!不要逃~~~因為這一次終於有底節點的戲份了!!!(感動。。。。)
首先,底節點對pivot說:
我是你的右節點,
我想你作我的左節點,
這樣我原有的左節點,剛好給你作右節點;
哈哈!!!
你猜怎麼著??
現在變成左左型啦~
那接著之前第一種分析的情形就可以繼續啦~
我還是在這裡說一下吧。(畢竟這個時候原來的底節點變成新的Pivot了呢。。。。戲份陡增有木有。。)
這個時候新的pivot(原來的底節點)對根節點說:
我現在是你的左節點,
我想你做我的右節點,
這樣我原來的右節點剛好做你的左節點!
到這裡,就完美地成為AVL樹啦~
4.右左型(右左旋)
底節點右旋,然後變成右右型後,根節點左旋;
這一次底節點的戲份也比較多~
首先是底節點對Pivot說:
我是你的左節點,
我想讓你做我的右節點,
這樣我的右節點剛好作你的左節點;
然後就變成右右型啦(此時底節點變成新的Pivot)
然後就是右右型的處理,這裡就留給你練習吧~~