Реферат: Структуры данных бинарное упорядоченное несбалансированное дерево
end; //Del
begin //Delete
if P <> nil then //искать удаляемый узел
if X < P^.Key then
Delete(P^.Left, X)
else
if X > P^.Key then
Delete(P^.Right, X) //искать в правом поддереве
else begin
//узел найден, надо его удалить
//сохранить ссылку на удаленный узел
Q := P;
if Q^.Right = nil then
//справа nil
//и ссылку на узел надо заменить ссылкой на этого потомка
P := Q^.Left
else
if Q^.Left = nil then
//слева nil
//и ссылку на узел надо заменить ссылкой на этого потомка
P := P^.Right
else //узел имеет двух потомков
Del(Q^.Left);
Dispose(Q);
end
else
WriteLn('Такого элемента в дереве нет');
end;
begin