diff options
author | 3gg <3gg@shellblade.net> | 2025-08-09 16:03:28 +0200 |
---|---|---|
committer | 3gg <3gg@shellblade.net> | 2025-08-09 16:03:28 +0200 |
commit | 727e3c59346da4f91284b34b4c18f2e0ba155e53 (patch) | |
tree | 807dccd5cba3c6bae2f8d0c9910157e306c6da5b /tree |
Diffstat (limited to 'tree')
-rw-r--r-- | tree/src/main.adb | 14 | ||||
-rw-r--r-- | tree/src/tree.adb | 12 | ||||
-rw-r--r-- | tree/src/tree.ads | 18 | ||||
-rw-r--r-- | tree/tree.gpr | 5 |
4 files changed, 49 insertions, 0 deletions
diff --git a/tree/src/main.adb b/tree/src/main.adb new file mode 100644 index 0000000..b9ece1a --- /dev/null +++ b/tree/src/main.adb | |||
@@ -0,0 +1,14 @@ | |||
1 | with Ada.Text_IO; use Ada.Text_IO; | ||
2 | |||
3 | with Tree; | ||
4 | |||
5 | procedure Main is | ||
6 | package IntTree is new Tree (Integer); | ||
7 | T : IntTree.Tree_Access := new IntTree.Tree; | ||
8 | begin | ||
9 | T.Left := new IntTree.Tree; | ||
10 | T.Right := new IntTree.Tree; | ||
11 | T.Right.Left := new IntTree.Tree; | ||
12 | |||
13 | Put_Line ("Tree height:" & IntTree.Height (T)'Image); | ||
14 | end Main; | ||
diff --git a/tree/src/tree.adb b/tree/src/tree.adb new file mode 100644 index 0000000..7e4a897 --- /dev/null +++ b/tree/src/tree.adb | |||
@@ -0,0 +1,12 @@ | |||
1 | package body tree is | ||
2 | |||
3 | function Height (T : Tree_Access) return Integer is | ||
4 | begin | ||
5 | if T = null then | ||
6 | return 0; | ||
7 | else | ||
8 | return 1 + Integer'Max (Height (T.Left), Height (T.Right)); | ||
9 | end if; | ||
10 | end Height; | ||
11 | |||
12 | end tree; | ||
diff --git a/tree/src/tree.ads b/tree/src/tree.ads new file mode 100644 index 0000000..1cf26fc --- /dev/null +++ b/tree/src/tree.ads | |||
@@ -0,0 +1,18 @@ | |||
1 | generic | ||
2 | type T is private; | ||
3 | |||
4 | package tree is | ||
5 | |||
6 | type Tree; | ||
7 | type Tree_Access is access Tree; | ||
8 | |||
9 | type Tree is record | ||
10 | Val : T; | ||
11 | Left : Tree_Access; | ||
12 | Right : Tree_Access; | ||
13 | end record; | ||
14 | |||
15 | -- Returns the height of the tree. | ||
16 | function Height (T : Tree_Access) return Integer; | ||
17 | |||
18 | end tree; | ||
diff --git a/tree/tree.gpr b/tree/tree.gpr new file mode 100644 index 0000000..bef680a --- /dev/null +++ b/tree/tree.gpr | |||
@@ -0,0 +1,5 @@ | |||
1 | project Tree is | ||
2 | for Source_Dirs use ("src"); | ||
3 | for Object_Dir use "obj"; | ||
4 | for Main use ("main.adb"); | ||
5 | end Tree; | ||