Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
Recursive ADT for binary trees:
type tree = Leaf | Node of int * tree * tree
let rec max_path t =
match t with
| Leaf -> 0
| Node (v, l, r) ->
let lp = max_path l in
let rp = max_path r in
v + (if lp > rp then lp else rp)
For the test tree:
1
/ 2 3
/ \ \
4 5 7
paths sum: 1+2+4=7, 1+2+5=8, 1+3+7=11. max = 11.
Tests 3-arg Node constructor with positional arg destructuring, two
nested let-bindings, and if-then-else as an inline expression.
73 baseline programs total.
22 lines
357 B
OCaml
22 lines
357 B
OCaml
type tree = Leaf | Node of int * tree * tree
|
|
|
|
let rec max_path t =
|
|
match t with
|
|
| Leaf -> 0
|
|
| Node (v, l, r) ->
|
|
let lp = max_path l in
|
|
let rp = max_path r in
|
|
v + (if lp > rp then lp else rp)
|
|
|
|
;;
|
|
|
|
let t = Node (1,
|
|
Node (2,
|
|
Node (4, Leaf, Leaf),
|
|
Node (5, Leaf, Leaf)),
|
|
Node (3,
|
|
Leaf,
|
|
Node (7, Leaf, Leaf)))
|
|
in
|
|
max_path t
|