簡單理解樹的旋轉
阿新 • • 發佈:2018-10-21
這一 四種 info spl 二叉 技術分享 轉發 bubuko 排序
網上的資料雜亂,樹的旋轉本來簡單易懂但被寫的很麻煩
請不要死記,沒有意義
首先我們要明白一些原則:
旋轉是以三個節點和這三個節點的子樹為操作對象的
旋轉會有一個旋轉中心,就是位於三個節點中間的那個節點
旋轉的意義不在於旋轉或者考倒大家,而是通過旋轉使得二叉排序樹趨近平衡,然後由此引出的單旋轉和雙旋轉,最終的目的就是為了使得結構趨於平衡
樹的旋轉發生的情況總共四種:
左左,右右
左右,右左
三角形代表一棵子樹,可以為空
由於是對稱的兩組,另外一組花的要假一點
實際還可以扯出一種情況,就是平衡狀態,這種狀態不需要旋轉
旋轉只分兩種 :左旋轉和右旋轉
然後,可以通過一次或多次旋轉可以使得四種情況相互轉化
證明:
由上面的圖片2可以看出,左右,左右通過一次旋轉可以轉化為左左,右右的情況
然後由圖一不難看出,左左,右右都可以通過一次旋轉變為近似平衡的結構,也就是旋轉通常要達到的目標情況,如果以這一情況為中轉,則可以實現左左,右右的轉化
加上旋轉可逆,也就是可以還原,顯然幾種情況是能相互轉換的
也就是:
左右>左左>平衡>右右>右左
右左>右右>平衡>左左>左右
旋轉的最終目的,是使得各種二叉排序樹(AVG,Splay,Treap等等)趨緊於平衡狀態
即
單旋轉:
雙旋轉:
簡單理解樹的旋轉