The Ada Program: tree.adb
1 -- tree.adb: preorder traversal of binary tree
2
3 with Ada.Text_IO, Ada.Integer_Text_IO;
4 use Ada;
5
6 procedure Tree is
7
8 type Node;
9 type Tree is access Node;
10 Null_Tree : constant Tree := null;
11 type Node is record
12 Item: Integer;
13 Left: Tree;
14 Right: Tree;
15 end record;
16
17 procedure Preorder (T: Tree) is
18 begin
19 if (T/=null) then
20 Integer_Text_IO.Put (T.Item);
21 Text_IO.New_Line;
22 Preorder (T.Left);
23 Preorder (T.Right);
24 end if;
25 end Preorder;
26
27 procedure Insert (I: Integer; T: in out Tree) is
28 begin
29 if T=null then
30 T := new Node'(I, null, null);
31 elsif I<T.Item then
32 Insert (I, T.Left);
33 else
34 Insert (I, T.Right);
35 end if;
36 end Insert;
37
38 type Item_Array is array (Integer range <>) of Integer;
39
40 procedure Insert (A: Item_Array; T: in out Tree) is
41 begin
42 for I in A'Range loop
43 Insert (A(I), T);
44 end loop;
45 end Insert;
46
47 T : Tree := null;
48 Data : constant Item_Array := (16,5,2,8,7,19,18,22,20,21,23);
49
50 begin
51 Insert (Data, T);
52 Preorder (T);
53 end Tree;