From 727e3c59346da4f91284b34b4c18f2e0ba155e53 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Sat, 9 Aug 2025 16:03:28 +0200 Subject: Initial commit --- tree/src/main.adb | 14 ++++++++++++++ tree/src/tree.adb | 12 ++++++++++++ tree/src/tree.ads | 18 ++++++++++++++++++ tree/tree.gpr | 5 +++++ 4 files changed, 49 insertions(+) create mode 100644 tree/src/main.adb create mode 100644 tree/src/tree.adb create mode 100644 tree/src/tree.ads create mode 100644 tree/tree.gpr (limited to 'tree') 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 @@ +with Ada.Text_IO; use Ada.Text_IO; + +with Tree; + +procedure Main is + package IntTree is new Tree (Integer); + T : IntTree.Tree_Access := new IntTree.Tree; +begin + T.Left := new IntTree.Tree; + T.Right := new IntTree.Tree; + T.Right.Left := new IntTree.Tree; + + Put_Line ("Tree height:" & IntTree.Height (T)'Image); +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 @@ +package body tree is + + function Height (T : Tree_Access) return Integer is + begin + if T = null then + return 0; + else + return 1 + Integer'Max (Height (T.Left), Height (T.Right)); + end if; + end Height; + +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 @@ +generic + type T is private; + +package tree is + + type Tree; + type Tree_Access is access Tree; + + type Tree is record + Val : T; + Left : Tree_Access; + Right : Tree_Access; + end record; + + -- Returns the height of the tree. + function Height (T : Tree_Access) return Integer; + +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 @@ +project Tree is + for Source_Dirs use ("src"); + for Object_Dir use "obj"; + for Main use ("main.adb"); +end Tree; -- cgit v1.2.3