Постановка задач



бет6/8
Дата07.04.2023
өлшемі0,65 Mb.
#80314
1   2   3   4   5   6   7   8
Байланысты:
KURSOVAYa YaZYKI 2

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


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет