unit
UmainBtree;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan, ComCtrls, ExtCtrls;
type
Tpoint = ^Tree;
Tree =
record
Tdata:
integer
;
TLefEl: Tpoint;
TRightEl: Tpoint;
end
;
TForm1 =
class
(TForm)
Edit1: TEdit;
BtnAddToTree: TButton;
Edit2: TEdit;
BtnShowTree: TButton;
XPManifest1: TXPManifest;
TreeView1: TTreeView;
Panel1: TPanel;
Label1: TLabel;
Button1: TButton;
Button4: TButton;
procedure
BtnAddToTreeClick(Sender: TObject);
procedure
BtnShowTreeClick(Sender: TObject);
procedure
FormShow(Sender: TObject);
procedure
Button1Click(Sender: TObject);
procedure
Button4Click(Sender: TObject);
private
public
end
;
var
Form1: TForm1;
root: Tpoint =
nil
;
CountEl:
integer
=
0
;
implementation
{$R *.dfm}
procedure
AddTreeElement(el:
integer
;
Var
Troot:Tpoint);
begin
if
Troot =
nil
then
begin
new(Troot);
Troot^.Tdata:=el;
Troot^.TLefEl:=
nil
;
Troot^.TRightEl:=
nil
;
end
else
begin
if
el <= Troot^.Tdata
then
AddTreeElement(el, Troot^.TLefEl)
else
AddTreeElement(el, Troot^.TRightEl) ;
end
;
end
;
procedure
vyvid(root:Tpoint; item:TTreeNode);
var
tmpItem:TTreeNode;
begin
if
root<>
nil
then
begin
tmpItem:=Form1
.
TreeView1
.
Items
.
AddChild(item,inttostr(root^.Tdata));
vyvid(root^.TLefEl, tmpItem);
vyvid(root^.TRightEl, tmpItem);
end
end
;
procedure
ShowTree;
begin
Form1
.
TreeView1
.
Items
.
Clear;
if
root <>
nil
then
begin
vyvid(root,
nil
);
Form1
.
TreeView1
.
FullExpand;
end
;
end
;
procedure
TForm1
.
BtnAddToTreeClick(Sender: TObject);
var
h:
integer
;
begin
If
(
Not
TryStrToInt(Edit1
.
Text,h))
Then
Begin
ShowMessage(
'Ошибка! Введите целое число!'
);
Exit;
End
else
begin
h:=StrToInt(Edit1
.
Text);
AddTreeElement(h, root);
Edit1
.
Text:=
''
;
CountEl:=CountEl+
1
;
Edit2
.
Text:=IntToStr(CountEl);
Edit1
.
setfocus;
ShowTree;
end
;
end
;
procedure
TForm1
.
BtnShowTreeClick(Sender: TObject);
begin
TreeView1
.
Items
.
Clear;
if
root =
nil
then
ShowMessage(
'Пустое дерево!'
)
else
ShowTree;
end
;
procedure
TForm1
.
FormShow(Sender: TObject);
begin
Edit1
.
setfocus;
end
;
procedure
TForm1
.
Button1Click(Sender: TObject);
begin
close;
end
;
procedure
TForm1
.
Button4Click(Sender: TObject);
begin
close;
end
;
end
.