Splay演算法總結

2022-06-20 20:24:08 字數 502 閱讀 1938

splay是乙個功能強大的資料結構,可以實現一些平衡樹無法完成的操作

例題p3391 【模板】文藝平衡樹

和平衡樹一樣,splay同樣也有左旋右旋的操作。

並且splay中還有乙個核心操作,那就是將乙個節點移到另乙個節點下面,並保證整棵樹的中序遍歷不變。

那麼很多操作就可以通過這兩個函式得出

比如在x後面插入一段序列,那麼只需要讓x移到根節點,讓x的後繼y成為x的兒子,那麼只需要將這個序列轉化為樹接到y的左兒子上即可。

下面是這兩個函式

左旋右旋函式

void rotate(int x)//左右旋合併過後的函式,可自行畫圖理解

splay函式

void splay(int x, int k)//將節點x移到k下面,死記硬背即可

rotate(x);

}if (!k)

root = x;

}

splay 學習總結 QwQ

省選之前就大概搞了下 splay 然後因為時間不太夠就沒寫總結了,然後太久沒用之後現在一回想感覺跟沒學過一樣了嚶嚶嚶 所以寫個簡陋的總結,肥腸簡陋,只適合 gql 複習用,不建議學習用 然後先推薦兩篇部落格,orz yyb 的部落格 qwq 我之前就是看這個學的 qwq orz xzy 學長的部落格...

總結 伸展樹Splay

感覺我在聯賽還差4天的時候學習splay有點慌,但還是要學一下。我們先對splay的陣列進行一些定義 struct nodet n 2 我們的splay應該要支援以下幾個操作 如下 includeusing namespace std const int n 500010 int root,tot ...

演算法整理 複習 Splay

一 zig 此時節點 u 是 root v 是左孩子 右旋 v 是右孩子 左旋 二 zig zig v u 同側,先 u 再 v 此時節點 u 不是 root v 與 u 同為左孩子 右旋兩次 v 與 u 同為右孩子 左旋兩次 三 zig zag v u 異側,先 v 再 u 此時節點 u 不是 r...