Есть код построения и поиска максимального значения элемента дерева, как удалить дерево для высвобождения памяти ? Написал процедуру удаления, не работает, что не верно ?
Program Lab_6;
uses crt;
type
TTree=^Tnode;
Tnode=record
inf:integer;
left,right:TTree;
end;
procedure Search_Max(var T:TTree;var elem:integer);
beginif T<>nilthenbeginif T^.inf>elem
then
elem:=T^.inf;
Search_Max(T^.right,elem);
Search_Max(T^.left,elem);
end;
end;
procedure RandomFillTree(var node:TTree; var nodes:integer);
var
left,right:integer;
beginif nodes=0then
exit;
left:=random(nodes);
right:=nodes-left-1;
new(node);
node^.inf:=random(1000);
writeln(' nodes:', nodes,' left:', left,' right:', right,' inf:', node^.inf);
node^.left:=nil;
node^.right:=nil;
RandomFillTree(node^.left, left);
RandomFillTree(node^.right, right);
end;
procedure DelTree(var T:TTree; const M:TTree);
beginif (T^.left=nil) and (T^.right=nil)
thenbegin
dispose(T);
T:=M;
if T<>nilthen
DelTree(T,M);
endelsebeginif T^.left<>nilthen DelTree(T^.left,M);
if T^.right<>nilthen DelTree(T^.right,M);
end;
end;
var
T:TTree;
Max,total_nodes:integer;
begin
clrscr;
writeln('Введите количество элементов дерева:');
readln(total_nodes);
RandomFillTree(T, total_nodes);
Search_Max(T, Max);
writeln;
writeln('Max= ', max);
writeln(T^.inf);
DelTree(T,T);
readln;
end.
Надо сделать как можно сложнее, "чтоб никто не догадался" (С), как оно работает?
GrukhvinEV
19.01.2012 20:30
Ой спасибо! Да я начинающий )))) Сидел вчера весь вечер велосипед изобретал ))))))) А еще вопрос а как проверить удалил ли я все динамические элементы или нет ? Не конкретно в этой программе а вообще.