Изменения

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

Дерево отрезков. Построение

48 байт убрано, 19:43, 4 сентября 2022
м
rollbackEdits.php mass rollback
Выделяют два основных способа построения дерева отрезков: построение снизу и построение сверху. При построении [[Реализация запроса в дереве отрезков снизу | снизу]] алгоритм поднимается от листьев к корню (Просто начинаем заполнять элементы массива <tex>t</tex> от большего индекса к меньшему, таким образом при заполнении элемента <tex> i </tex> его дети <tex>2i+1</tex> и <tex>2i+2</tex> уже будут заполнены, и мы с легкостью посчитаем бинарную операцию от них), а при построении [[Реализация запроса в дереве отрезков сверху | сверху]] спускается от корня к листьям. Особенные изменения появляются в реализации запросов к таким деревьям отрезков.
[[Файл:Segment_tree.png|Пример дерева отрезков для максимумаминимума]]
Реализация построения сверху:
'''function''' treeBuild('''T''' a[], '''int''' i, '''int''' tl, '''int''' tr): <font color=green>// мы находимся в вершине с номером i, который отвечает за полуинтервал [tl, tr) </font>
'''if''' tl == tr
'''return'''
'''if''' tr - tl == 1
t[i] = a[tl]
1632
правки

Навигация