begin if node^.L <> nil then begin {вывод в начале левой части вызывая рекурсивно}
TreeToMas( node^.L);
end;
{вывод узла}
mas[i] := node^.val;
inc(i); {+1 для следующего индекса}
if node^.R <> nil then begin {вывод потом правой части вызывая рекурсивно}
TreeToMas( node^.R);
end;
end;
end;
begin tree := nil;
nstep := 0; {кол. шагов}
{если массив не пуст}
if n > 0 then begin {весь массив записываем в дерево и таким образом сортируя}
{для 1 элемента массива}
New(newN);
newN^.val := mas[0];
newN^.L := nil;
newN^.R := nil;
tree := newN;
Inc(nstep); {+1 к кол. шагов}
{для остальных элементов добавляем}
for i := 1 to n - 1 do begin AddEl(tree, mas[i]);
end;
i := 0;
{просмотр дерева и запись в массив по индексу i}
TreeToMas(tree);
DelTree(tree); {удаляем дерево}
{сообщаем о результате}
writeln(F, 'Cортировка массива с помощью двоичного дерева');
writeln('Cортировка массива с помощью двоичного дерева');
writeln(F, 'Количество шагов = ', nstep);
writeln('Количество шагов = ', nstep);
masissort := True; {массив отсортирован}
end;
end;
{============= НАЧАЛО ПРОГРАММЫ ===============================================}
begin writeln('Курсовая работа "Обменная сортировка и сортировка деревом"');
writeln('результаты программы сохранятся в файл "result.txt"');
{откроем файл на запись}
Assign(F, 'result.txt'); {Связывает файловую переменную с файлом на диске}
Rewrite(F); {Открывает текстовый файл на запись (создание или перезапись)}
{цикл меню}
repeat Menu; {вывод описания меню}
readln(m);