![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Написать рекурсивную функцию или процедуру, которая:
Определяет максимальную глубину непустого дерева Т, т. е. число ветвей в самом длинном из путей от корня дерева до листьев;
Текст программы T854b:
Program Task854b;
Uses CRT;
Type
Tree=^Root;
Root=Record
Element:Char;
Left,Right:Tree;
End;
Var
T:Tree;
Depth,n:Integer;
{создает поддерево с двумя листьями}
Procedure SubTreeBuilding(var P:Tree);
Var
TLeft,TRight:Tree;
Begin
New(P);
New(TLeft);
New(TRight);
P^.Element:=Chr(64+Random(28));
TLeft^.Left:=nil;
TLeft^.Right:=nil;
TRight^.Left:=nil;
TRight^.Right:=nil;
TLeft^.Element:=Chr(64+Random(28));
TRight^.Element:=Chr(64+Random(28));
P^.Left:=TLeft;
P^.Right:=TRight;
End;
Procedure Tree_Build;
Begin
Randomize;
SubTreeBuilding(T);
SubTreeBuilding(T^.Left);
SubTreeBuilding(T^.Right);
SubTreeBuilding(T^.Left^.Left);
SubTreeBuilding(T^.Right^.Left);
SubTreeBuilding(T^.Left^.Right);
SubTreeBuilding(T^.Right^.Right);
SubTreeBuilding(T^.Right^.Left^.Left);
SubTreeBuilding(T^.Right^.Left^.Left);
SubTreeBuilding(T^.Left^.Right^.Left);
SubTreeBuilding(T^.Right^.Right^.Left);
SubTreeBuilding(T^.Left^.Left^.Right);
SubTreeBuilding(T^.Right^.Left^.Right);
SubTreeBuilding(T^.Left^.Right^.Right);
SubTreeBuilding(T^.Right^.Right^.Right);
SubTreeBuilding(T^.Left^.Left^.Right^.Right);
SubTreeBuilding(T^.Right^.Left^.Right^.Right);
SubTreeBuilding(T^.Right^.Left^.Right^.Right^.Left);
SubTreeBuilding(T^.Right^.Left^.Right^.Right^.Left^.Right);
End;
procedure Detect_Tree_Depth(r: tree; Layer: Integer);
begin
if r<>nil then
begin
Detect_Tree_Depth(r^.left, Layer+1);
If Layer>Depth Then Depth:=Layer;
Detect_Tree_Depth(r^.right, Layer+1);
If Layer>Depth Then Depth:=Layer;
inc(n);
end;
end;
Begin
Tree_Build;
Depth:=0;
n:=0;
Detect_Tree_Depth(T,0);
WriteLn;
WriteLn('Максимальная глубина заданного дерева ',Depth,' узла(ов)');
WriteLn('Всего дерево содержит ',n,' узла(ов)');
WriteLn;
WriteLn('Press any key...');
Repeat until Keypressed;
End.
Результат работы программы:
Максимальная глубина заданного дерева 7 узла(ов) Всего дерево содержит 37 узла(ов) Press any key... |
Дата публикования: 2015-02-22; Прочитано: 222 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!