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 type Node is record
11 Item: Integer;
12 Left,Right: Tree;
13 end record;
14
15 procedure Preorder (T: Tree) is
16 begin
17 if (T/=null) then
18 Integer_Text_IO.Put (T.Item);
19 Text_IO.New_Line;
20 Preorder (T.Left);
21 Preorder (T.Right);
22 end if;
23 end Preorder;
24
25 procedure Inorder (T: Tree) is
26 begin
27 if (T/=null) then
28 Inorder (T.Left);
29 Integer_Text_IO.Put (T.Item);
30 Text_IO.New_Line;
31 Inorder (T.Right);
32 end if;
33 end Inorder;
34
35 procedure Insert (I: Integer; T: in out Tree) is
36 begin
37 if T=null then
38 T := new Node'(I, null, null);
39 elsif I<T.Item then
40 Insert (I, T.Left);
41 else
42 Insert (I, T.Right);
43 end if;
44 end Insert;
45
46 type Item_Array is array (Integer range <>) of Integer;
47
48 procedure Insert (A: Item_Array; T: in out Tree) is
49 begin
50 for I in A'Range loop
51 Insert (A(I), T);
52 end loop;
53 end Insert;
54
55 T : Tree := null;
56 Data : constant Item_Array := (16,5,2,8,7,19,18,22,20,21,23);
57
58 begin
59 Insert (Data, T);
60 Preorder (T);
61 Inorder (T);
62 end Tree;