Курсовая работа: Ссылочные типы. Динамические переменные

{элемент найден, необходимо его удалить}

ServiceVar1:= Tree;

{второй случай процедуры удаления}

if ServiceVar1^.Right= nil then

Tree:= ServiceVar1^.Left

else

if ServiceVar1^.Left= nil then

Tree:= ServiceVar1^.Right

else

{третийслучайпроцедурыудаления}

Del( ServiceVar1^.Left )

end

end;

Вспомогательная рекурсивная процедура Del вызывается лишь в третьем случае процедуры удаления. Она переходит к самому правому элементу левого поддерева удаляемого элемента, а затем заменяет информационное поле удаляемого на значение поля найденного элемента.

4.4 Вывод элементов дерева

Данная задача также может быть решена с помощью механизма рекурсии.

procedure PrintTree( Tree: Pointer);

var

ServiceVar: Assoc1;

begin

ServiceVar:= Tree;

writeln( ServiceVar^.Elem );

if ServiceVar^.Right <> nil then PrintTree(ServiceVar^.Right);

if ServiceVar^.Left <> nil then PrintTree(ServiceVar^.Left);

end;

Разберем решение типичной задачи, связанной с обработкой двоичных деревьев.

Текст задания

Описать процедуру copy( T, T1) которая строит T1 √ копию дерева T.

Решение

К-во Просмотров: 557
Бесплатно скачать Курсовая работа: Ссылочные типы. Динамические переменные