假設想要對一個二叉查找樹執行一系列的查找操作。爲了使整個查找時間更小,被查頻率高的那些條目就應當經常處於靠近樹根的位置。於是想到設計一個簡單方法, 在每次查找之後對樹進行重構,把被查找的條目搬移到離樹根近一些的地方。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語言描述》