[學習筆記] Splay & Treap 平衡樹 - 資料結構
Splay 樹
又名伸展樹,一種平衡二叉查詢樹,透過 \(\text{Splay}\) 操作不斷把節點旋到根節點來維護整顆樹的平衡。
說人話,很玄學的玩意,複雜度是單 log 級別的。為啥是單 log,科學的解釋請移步 OI-WIKI。不科學的解釋就是,透過不斷 \(\text{Splay}\),以至於整棵樹不會變成一條鏈,再加上二叉搜尋樹的看家本領,有點類似於二分查詢,於是複雜度就變成 \(\mathcal{O}(n\log n)\) 了。
說一說它的一些操作。從它最重要的操作開始。
Splay 操作
單次 splay 的本質就是,把某個節點與它父親的關係調換一下。因為這是個二叉查詢樹,所以這種操作很方便:看圖:
如果