/*Copyright (C) 1992, 1995 by Thomas Glen Smith. All Rights Reserved.*/
/* avltsub4.h APL2 V1.0.0 **********************************************
* Included in avltree.c. *
***********************************************************************/
else /* right imbalance - symmetric to left imbalance */
if (b->avlbf == -1) { /* rotation type rr */
a->rite_child = b->left_child;
b->left_child = a;
a->avlbf = b->avlbf = 0;
} else { /* rotation type rl */
c = b->left_child;
if (c == NULL) cl = cr = NULL;
else {
cl = c->left_child;
cr = c->rite_child;
}
b->left_child = cr;
a->rite_child = cl;
c->rite_child = b;
c->left_child = a;
switch (c->avlbf) {
case -1: /* rr(b) */
a->avlbf = +1;
b->avlbf = 0;
break;
case +1: /* rr(c) */
b->avlbf = -1;
a->avlbf = 0;
break;
default:
b->avlbf = a->avlbf = 0;
break;
} /* end switch */
c->avlbf = 0;
b = c;
}