<br>
===Псевдокод===
build_subarray_tree(element[] array) {:
<font color=green>//построение одномерного дерева отрезков на массиве array с сохранением подмассива в каждой вершине </font>
} build_normal_tree(element[] array): { <font color=green> //построение обычного одномерного дерева отрезков на массиве array </font> } get_inside_array(vertex v) {:
<font color=green>//получение подмассива, сохраненного в вершине vertex </font>
} build_compressed_tree(element[] array, int coordinate = 1) : <font color=green>//рекурсивная процедура построения сжатого дерева отрезков</font> { '''if''' (coordinate < p) { sort(array, coordinate); <font color=green>//сортировка массива по нужной координате </font> segment_tree = build_subarray_tree(array); '''for''' each (vertex v in segment_tree) { build_compressed_tree(inside_array(v), coordinate + 1); } } '''if''' (coordinate == p) { sort(array, coordinate); build_normal_tree(array); } }
==Анализ полученной структуры==