chiark / gitweb /
rbtree.c (rbtree_splitroot): Count output black-heights correctly.
[xyla] / rbtree.c
index 8cb7cdeb904c098f393b519fa8cbf4dff24f7634..e4dbeba61197b06bbfec54fa12cdc7813dfd2696 100644 (file)
--- a/rbtree.c
+++ b/rbtree.c
@@ -1285,7 +1285,7 @@ void *rbtree_splitroot(struct bstnode **left_out, int *lht_out,
       if (right->f&RBF_RED) { right->f &= ~RBF_RED; }
     } else {
       if (blkht < 0) blkht = rbtree_height(node);
-      lht = rht = blkht;
+      lht = rht = blkht - 1;
       if (left && left->f&RBF_RED) { lht++; left->f &= ~RBF_RED; }
       if (right && right->f&RBF_RED) { rht++; right->f &= ~RBF_RED; }
       if (lht_out) *lht_out = lht;