伸展樹

伸展樹 （ Splay Tree ） 是一種能夠自我平衡的二叉查找樹 ， 它能在均攤的時間內完成基於伸展 （ Splay ） 操作的插入 、 查找 、 修改和刪除操作 。 它是由丹尼爾 · 斯立特 （ Daniel Sleator ） 和羅伯特 · 塔揚在1985年發明的 。 在伸展樹上的一般操作都基於伸展操作 ： 假設想要對一個二叉查找樹執行一系列的查找操作 ， 爲了使整個查找時間更小 ， 被查頻率高的那些條目就應當經常處於靠近樹根的位置 。 於是想到設計一個簡單方法 ， 在每次查找之後對樹進行調整 ， 把被查找的條目搬移到離樹根近一些的地方 。 伸展樹應運而生 。 伸展樹是一種自調整形式的二叉查找樹 ， 它會沿着從某個節點到樹根之間的路徑 ， 通過一系列的旋轉把這個節點搬移到樹根去 。 它的優勢在於不需要記錄用於平衡樹的冗餘信息 。