Изменения

Перейти к: навигация, поиск

Декартово дерево

12 байт добавлено, 00:14, 23 января 2016
Рекурсивный алгоритм
Рассмотрим приоритеты <tex>y_1 , y_2 , \ldots , y_n</tex> и выберем максимум среди них, пусть это будет <tex>y_k</tex>, и сделаем <tex>(x_k, y_k)</tex> корнем дерева (по свойству [[Двоичная куча|пирамиды]] в корне должен быть элемент с максимальным приоритетом). Проделав то же самое с <tex>y_1 , y_2 , \ldots , y_{k-1}</tex> и <tex>y_{k+1} , y_{k+2} , \ldots , y_n</tex>, получим соответственно левого и правого сына <tex>(x_k, y_k)</tex>.
Такой алгоритм работает за <tex>O(n^2\times log(n))</tex>.
=== Алгоритм за O(n) ===
172
правки

Навигация