平衡樹——fhq_treap

之前寫過 Splay 的介紹。那麼接下來就是對於 fhq_treap 的介紹了。
相比於 Splay,fhq_treap 要簡單一些(個人認爲),同時代碼量也小一些。

0. 引子

dalao雲:“treap,tree+heap 也。”
treap 是一個同時具有 tree(即BST)和 heap 的特點的平衡樹。
具體地說,我們會對每個節點隨機一個 key 值,然後要求這棵 BST 要對 key 值同時滿足堆的性質。也就是說,treap 是笛卡爾樹的一種。
通過隨機的 key 值,我們可以某種程度上隨機確定樹的形態,從而使樹儘量平衡。

傳統的 treap 是靠旋轉來確定樹的形態。但是 fhq_treap 則大大不同。它的核心操作爲 split 和 merge。

1. split/merge

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