home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 2
/
ctrom_ii_b.zip
/
ctrom_ii_b
/
PROGRAM
/
PASCAL
/
PASTUT34
/
BINTREE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-06-03
|
2KB
|
99 lines
program binary_tree;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{ Program to show how a binary tree can be used to order a set of integers }
{ }
{ BINTREE.PAS -> BINTREE.EXE R Shaw 5.8.92 }
{__________________________________________________________________________}
uses Crt;
type
PNode = ^TNode;
Tnode = record
left : PNode;
number : integer;
right : PNode;
end;
var
Num : integer;
Parent,Child : PNode;
FirstNode,l,r : PNode;
reply : char;
procedure init;
begin
FirstNode := Nil;
Parent := Nil;
Child := Nil;
end;
procedure NextNode(Node:PNode);
procedure CreateNode(n: integer);
begin
New(Child);
Child^.number := n;
Child^.left := Nil;
Child^.right := Nil;
end;
begin
if FirstNode = Nil then begin
CreateNode(num);
FirstNode := Child;
exit;
end;
if Node^.number > Num
then if Node^.left = Nil
then begin
CreateNode(num);
Node^.left := Child;
end
else begin
Node := Node^.left;
NextNode(Node);
end
else if Node^.right = Nil
then begin
CreateNode(num);
Node^.right := Child;
end
else begin
Node := Node^.right;
NextNode(Node);
end;
end;
procedure Tree(Node: PNode);
begin
l := Node^.left;
If l <> Nil then Tree(l);
if Node^.number <> -1 then writeln(Node^.number);
r := Node^.right;
If r <> Nil then Tree(r);
end;
{Main}
begin
ClrScr;
Init;
repeat
Write('Please enter a number in range 0 to 30000 or -1 to conclude ');
readln(num);
NextNode(FirstNode);
until num = -1;
writeln;
write('Do you wish for an ordered list of the data (Y/N) ? ');
readln(reply);
writeln;
If UpCase(reply) = 'Y' then Tree(FirstNode);
writeln;
write('Press any key to continue: ');
repeat until keypressed;
end.