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);
begin
if T<>nil
then
begin
if 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;
begin
if nodes=0
then
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);
begin
if (T^.left=nil) and (T^.right=nil)
then begin
dispose(T);
T:=M;
if T<>nil then
DelTree(T,M);
end
else begin if T^.left<>nil then DelTree(T^.left,M);
if T^.right<>nil then 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.
Высвобождение памяти занимаемой деревом. |