Treap: как случайные приоритеты спасают бинарное дерево поиска от вырождения

Treap (Cartesian Tree)

Treap (дерево + куча) — структура данных, объединяющая бинарное дерево поиска по ключам и бинарную кучу по случайным приоритетам. Благодаря уникальным приоритетам дерево строится однозначно и в среднем остаётся сбалансированным, что даёт O(log n) на вставку, поиск и удаление. Статья подробно разбирает операции Split и Merge, на которых строятся все остальные, и приводит компактную реализацию на C++.

Очевидно, если выбирать приоритеты случайно, вы получите невырожденные деревья в среднем, что обеспечит сложность основных операций.

Ещё за этот день

2026-10-29