Изменения

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

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

332 байта убрано, 13:15, 26 апреля 2012
Рекурсивный алгоритм
Рассмотрим приоритеты <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>h</tex>, в котором для каждого элемента мы искали максимум из набора, состоящего не более чем из <tex>n</tex> элементов. Из этого следует, что Такой алгоритм работает за <tex>O(nhn^2)</tex>.
=== Алгоритм за O(n) ===

Навигация