end;
end;
{------------------------------------------------------------------------------}
{6-сортировка массива с помощью двоичного дерева
(использует глобальные переменные F, mas, n, masissort)}
procedure SortB();
var tree: PNode;{указатель на дерево (его корень)}
newN: PNode;{новый элемент}
i : Integer;
nstep: Integer; {кол. шагов}
{удалить узел дерева и всё ниже, то есть всё поддерево}
procedure DelTree(node: PNode);
begin if node <> nil then begin DelTree(node^.L); {удаляем по левой ветви}
DelTree(node^.R); {удаляем по правой ветви}
node := nil; {присваивая nil указателю приводит к удалению выделенной памяти}
end;
end;
{добавить значение в дерево}
procedure AddEl(node: PNode; el: Integer);
begin Inc(nstep); {+1 к кол. шагов}
{если новое значение <= то идем по левой ветви}
if el <= node^.val then begin {если левая еще пустая, то создаем и запишем элемент}
if node^.L = nil then begin New(newN);
newN^.val := el;
newN^.L := nil;
newN^.R := nil;
node^.L := newN;
end else {иначе рекурсивный вызов}
AddEl(node^.L, el);
end else {иначе ищем по правой ветви}
begin {если правая еще пустая, то создаем и запишем элемент}
if node^.R = nil then begin New(newN);
newN^.val := el;
newN^.L := nil;
newN^.R := nil;
node^.R := newN;
end else {иначе рекурсивный вызов}
AddEl(node^.R, el);
end;
end;
{просмотр дерева и запись в массив по индексу i}
procedure TreeToMas(node: PNode);
begin if node <> nil then