Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Часть II. Написать рекурсивную функцию или процедуру, которая:



Написать рекурсивную функцию или процедуру, которая:

Определяет максимальную глубину непустого дерева Т, т. е. число ветвей в самом длинном из путей от корня дерева до листьев;

Текст программы 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; Прочитано: 204 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...