28 lines
626 B
ObjectPascal
28 lines
626 B
ObjectPascal
// Ðåêóðñèâíîå ðèñîâàíèå äâîè÷íîãî äåðåâà
|
|
uses GraphABC;
|
|
|
|
const
|
|
LevelHeight = 50;
|
|
Levels = 8;
|
|
delay = 10;
|
|
|
|
procedure DrawTree(x,y,dx,level: integer);
|
|
// îáõîä: ëåâîå ïîääåðåâî, êîðåíü, ïðàâîå
|
|
begin
|
|
if level>0 then
|
|
begin
|
|
DrawTree(x-dx,y+LevelHeight,dx div 2,level-1);
|
|
Line(x,y,x-dx,y+LevelHeight);
|
|
Line(x,y,x+dx,y+LevelHeight);
|
|
Sleep(delay);
|
|
DrawTree(x+dx,y+LevelHeight,dx div 2,level-1);
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
Window.Title := 'Ðåêóðñèâíîå ðèñîâàíèå áèíàðíîãî äåðåâà';
|
|
SetSmoothingOff;
|
|
SetWindowSize(800,30+Levels*LevelHeight);
|
|
DrawTree(WindowWidth div 2,10,WindowWidth div 5,Levels);
|
|
end.
|