@@ -41,7 +41,7 @@ type ('a, 'b) cmp = ('a, 'b) Belt_Id.cmp
41
41
children differ by at most 2 *)
42
42
43
43
44
- let treeHeight (n : _ t ) =
44
+ let [ @ inline] height (n : _ t ) =
45
45
match n with
46
46
| None -> 0
47
47
| Some n -> n.height
@@ -59,8 +59,8 @@ let rec copy n =
59
59
Inline expansion of treeHeight for better speed. *)
60
60
61
61
let create (l : _ t ) v (r : _ t ) =
62
- let hl = match l with None -> 0 | Some n -> n.height in
63
- let hr = match r with None -> 0 | Some n -> n.height in
62
+ let hl = height l in
63
+ let hr = height r in
64
64
Some { left = l; value = v; right = r; height = (if hl > = hr then hl + 1 else hr + 1 )}
65
65
66
66
@@ -284,7 +284,7 @@ let rec checkInvariantInternal (v : _ t) =
284
284
| None -> ()
285
285
| Some n ->
286
286
let {left = l; right = r} = n in
287
- let diff = treeHeight l - treeHeight r in
287
+ let diff = height l - height r in
288
288
[% assert diff < = 2 && diff > = - 2 ];
289
289
checkInvariantInternal l;
290
290
checkInvariantInternal r
@@ -546,9 +546,9 @@ let rotateWithLeftChild k2 =
546
546
| Some k1 ->
547
547
k2 .left < - k1 .right;
548
548
k1 .right < - Some k2 ;
549
- let hlk2, hrk2 = k2 .left|. treeHeight , k2 .right |. treeHeight in
549
+ let hlk2, hrk2 = k2 .left|. height , k2 .right |. height in
550
550
k2 .height < - (Pervasives. max hlk2 hrk2 + 1 );
551
- let hlk1, hk2 = k1 .left|. treeHeight , k2 .height in
551
+ let hlk1, hk2 = k1 .left|. height , k2 .height in
552
552
k1 .height < - (Pervasives. max hlk1 hk2 + 1 );
553
553
k1
554
554
(* right rotation *)
@@ -557,9 +557,9 @@ let rotateWithRightChild k1 =
557
557
| Some k2 ->
558
558
k1 .right < - k2 .left;
559
559
k2 .left < - Some k1;
560
- let hlk1, hrk1 = k1.left |. treeHeight , k1 .right |. treeHeight in
560
+ let hlk1, hrk1 = k1.left |. height , k1 .right |. height in
561
561
k1 .height < - (Pervasives. max hlk1 hrk1 + 1 );
562
- let hrk2, hk1 = k2 .right |. treeHeight , k1 .height in
562
+ let hrk2, hk1 = k2 .right |. height , k1 .height in
563
563
k2 .height < - (Pervasives. max hrk2 hk1 + 1 );
564
564
k2
565
565
@@ -584,13 +584,13 @@ let doubleWithRightChild k2 =
584
584
rotateWithRightChild k2
585
585
586
586
let heightUpdateMutate t =
587
- let hlt, hrt = t .left|. treeHeight , t .right |. treeHeight in
587
+ let hlt, hrt = t .left|. height , t .right |. height in
588
588
t .height < - (Pervasives. max hlt hrt + 1 );
589
589
t
590
590
591
591
let balMutate nt =
592
592
let {left = l; right = r} = nt in
593
- let hl, hr = (treeHeight l, treeHeight r) in
593
+ let hl, hr = (height l, height r) in
594
594
if hl > 2 + hr then
595
595
match l with None -> assert false
596
596
| Some {left = ll ; right = lr } ->
0 commit comments