ocaml: phase 5.1 tree_depth.ml baseline (binary tree depth, longest path = 4)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
Same 'tree = Leaf | Node of int * tree * tree' ADT as iter-159
max_path_tree.ml, but the recursion ignores the value:
let rec depth t = match t with
| Leaf -> 0
| Node (_, l, r) ->
let dl = depth l in
let dr = depth r in
1 + (if dl > dr then dl else dr)
For the test tree:
1
/ 2 3
/ 4 5
/
8
longest path is 1 -> 2 -> 5 -> 8, depth = 4.
Tests wildcard pattern in constructor 'Node (_, l, r)', two nested
let-bindings in match arm, inline if-as-expression for max.
83 baseline programs total.
This commit is contained in:
@@ -78,6 +78,7 @@
|
||||
"zip_unzip.ml": 1000,
|
||||
"sieve.ml": 15,
|
||||
"sum_squares.ml": 385,
|
||||
"tree_depth.ml": 4,
|
||||
"triangle.ml": 11,
|
||||
"twosum.ml": 5,
|
||||
"unique_set.ml": 9,
|
||||
|
||||
20
lib/ocaml/baseline/tree_depth.ml
Normal file
20
lib/ocaml/baseline/tree_depth.ml
Normal file
@@ -0,0 +1,20 @@
|
||||
type tree = Leaf | Node of int * tree * tree
|
||||
|
||||
let rec depth t = match t with
|
||||
| Leaf -> 0
|
||||
| Node (_, l, r) ->
|
||||
let dl = depth l in
|
||||
let dr = depth r in
|
||||
1 + (if dl > dr then dl else dr)
|
||||
|
||||
;;
|
||||
|
||||
let t = Node (1,
|
||||
Node (2,
|
||||
Node (4, Leaf, Leaf),
|
||||
Node (5,
|
||||
Node (8, Leaf, Leaf),
|
||||
Leaf)),
|
||||
Node (3, Leaf, Leaf))
|
||||
in
|
||||
depth t
|
||||
@@ -407,6 +407,12 @@ _Newest first._
|
||||
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
||||
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
||||
recursive match, List.append, List.fold_left.
|
||||
- 2026-05-09 Phase 5.1 — tree_depth.ml baseline (binary tree depth,
|
||||
longest path = 4). Same `tree = Leaf | Node of int * tree * tree`
|
||||
ADT as iter 159, but recursion now ignores the value
|
||||
(`Node (_, l, r)`) and returns `1 + max (depth l) (depth r)`. Uses
|
||||
wildcard pattern in constructor, two nested let-bindings in arm,
|
||||
and inline if-as-expression for max. 83 baseline programs total.
|
||||
- 2026-05-09 Phase 5.1 — stable_unique.ml baseline (Hashtbl-tracked
|
||||
dedupe preserving order, length+sum = 8+38 = 46). Walks input
|
||||
with `Hashtbl.mem` + `Hashtbl.add seen x ()` (unit-payload to use
|
||||
|
||||
Reference in New Issue
Block a user