Treapはなぜランダムな優先度で木の崩壊を防げるのか

Treap (Cartesian Tree)

Treapは二分探索木と二分ヒープを組み合わせたデータ構造で、キーとランダムな優先度の組を保持する。優先度がなければ木は連結リスト状に退化し最悪O(n)になるが、優先度をランダムに選ぶことで平均O(log n)が保証される。SplitとMergeという2つの補助操作だけで挿入・削除・検索・結合まで実装できる点が特徴で、1989年にSiedelとAragonが提案した。

優先度をランダムに選べば、平均して非退化な木が得られ、主要な操作の計算量が保証される。そのためこのデータ構造は「ランダム化二分探索木」とも呼ばれる。

この日のほかの記事

2026-10-29