Właściwy sposób wykorzystania struktury danych w OCaml
Ok, napisałem abinary search tree
w OCaml.
type 'a bstree =
|Node of 'a * 'a bstree * 'a bstree
|Leaf
let rec insert x = function
|Leaf -> Node (x, Leaf, Leaf)
|Node (y, left, right) as node ->
if x < y then
Node (y, insert x left, right)
else if x > y then
Node (y, left, insert x right)
else
node
Myślę, że powyższy kod nie ma problemów.
Kiedy z niego korzystam, piszę
let root = insert 4 Leaf
let root = insert 5 root
...
Czy to właściwy sposóbuse/insert
do drzewa?
Chodzi mi o to, że nie powinienem deklarować roota i za każdym razem, gdy zmieniam wartość roota zmiennej, prawda?
Jeśli tak, w jaki sposób zawsze mogę zachować roota i wstawić wartość do drzewa w dowolnym momencie?