fix binary tree inserts
This commit is contained in:
2 files changed
+6
-2
No files matched your search
@@ -17,6 +17,8 @@ let rec kvtree_insert ~cmp k v t =
|
|||||||
Node (k', v', kvtree_insert ~cmp k v l, r)
|
Node (k', v', kvtree_insert ~cmp k v l, r)
|
||||||
| Node (k', v', l, r) when cmp k k' > 0 ->
|
| Node (k', v', l, r) when cmp k k' > 0 ->
|
||||||
Node (k', v', l, kvtree_insert ~cmp k v r)
|
Node (k', v', l, kvtree_insert ~cmp k v r)
|
||||||
|
| Node (k', _, l, r) when cmp k k' = 0 ->
|
||||||
|
Node (k, v, l, r)
|
||||||
| _ -> t;;
|
| _ -> t;;
|
||||||
|
|
||||||
(**/**)2
|
(**/**)2
|
||||||
|
|||||||
@@ -42,9 +42,11 @@ module Make(Ord: OrderedType) = struct
|
|||||||
match t with
|
match t with
|
||||||
| L -> N (k, v, L, L)
|
| L -> N (k, v, L, L)
|
||||||
| N (k', v', l, r) when Ord.compare k k' < 0 ->
|
| N (k', v', l, r) when Ord.compare k k' < 0 ->
|
||||||
N (k', v', insert k v l, r)
|
N (k', v', insert k v l, r)
|
||||||
| N (k', v', l, r) when Ord.compare k k' > 0 ->
|
| N (k', v', l, r) when Ord.compare k k' > 0 ->
|
||||||
N (k', v', l, insert k v r)
|
N (k', v', l, insert k v r)
|
||||||
|
| N (k', _, l, r) when Ord.compare k k' = 0 ->
|
||||||
|
N (k, v, l, r)
|
||||||
| _ -> t;;
|
| _ -> t;;
|
||||||
|
|
||||||
(** [find_opt k t] takes a key [k] and a kvtree [t] and returns
|
(** [find_opt k t] takes a key [k] and a kvtree [t] and returns
|
||||||
|
|||||||
Reference in new issue
Block a user