伸展樹(Splay Tree)的旋轉

      假設想要對一個二叉查找樹執行一系列的查找操作。爲了使整個查找時間更小,被查頻率高的那些條目就應當經常處於靠近樹根的位置。於是想到設計一個簡單方法, 在每次查找之後對樹進行重構,把被查找的條目搬移到離樹根近一些的地方。splay tree應運而生。splay tree是一種自調整形式的二叉查找樹,它會沿着從某個節點到樹根之間的路徑,通過一系列的旋轉把這個節點搬移到樹根去。(來自百度百科http://baike.baidu.com/view/1118088.htm

 

      令X是在訪問路徑上的一個非根節點,我們將在這個路徑上實施旋轉操作。

      1. 如果X的父結點是樹根,那麼只需要旋轉X和樹根(具體見AVL樹的單旋轉)

      2. 否則,X就有父親(P)和祖父(G),存在兩種情況以及對稱的情形要考慮

          a. 之字形情形(zig-zag)

 

          b. 一字型情形(zig-zig)

 

 

以上內容來自《數據結構與算法分析C語言描述》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章