1. 程式人生 > >AVL樹的左單旋、右單旋、左右旋、右左旋

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)

    然後就是右右型的處理,這裡就留給你練習吧~~