Treap
各ノードに乱数を割り振る。そして、この乱数値に基づいて、二分ヒープを作る。二分ヒープにおいて、子の左右は無規定だが、この部分を2分探索木のルールに基づき、(乱数値の方ではなく、本来のノードの値に基づき)左の子ノードは親ノードよりも小さくし、右の子ノードは親ノードよりも大きくする。乱数で作られた2分ヒープの高さは、O(log n) であるため、treap の木の高さは O(log n) になる。
より具体的には、挿入時は、乱数値を無視して、2分木として適切な葉に追加し、そこから、木の回転を使い、2分ヒープが成立するように、親方向へノードを上げていく。削除時は、木の回転を使い、葉まで降ろし、そして削除する。探索などは、通常の2分探索木と同一。