www.delorie.com/gnu/docs/avl/libavl_98.html search
GNU libavl 2.0.1

 [ < ] [ > ] [ << ] [ Up ] [ >> ] [Top] [Contents] [Index] [ ? ]

### 6.4.5 Symmetric Case

Finally, we need to write code for the case that we chose not to discuss earlier, where the insertion occurs in the right subtree of y. All we have to do is invert the signs of balance factors and switch avl_link[] indexes between 0 and 1. The results are this:

 ```struct avl_node *x = y->avl_link[1]; if (x->avl_balance == +1) { <@xref{\NODE\, , Rotate left at y.> in AVL tree,158} } else { <@xref{\NODE\, , Rotate right at x.> then left at y in AVL tree,159} } ```
This code is included in @refalso{151

 ```w = x; y->avl_link[1] = x->avl_link[0]; x->avl_link[0] = y; x->avl_balance = y->avl_balance = 0; ```
This code is included in @refalso{157

 ```assert (x->avl_balance == -1); w = x->avl_link[0]; x->avl_link[0] = w->avl_link[1]; w->avl_link[1] = x; y->avl_link[1] = w->avl_link[0]; w->avl_link[0] = y; if (w->avl_balance == +1) x->avl_balance = 0, y->avl_balance = -1; else if (w->avl_balance == 0) x->avl_balance = y->avl_balance = 0; else /* w->avl_balance == -1 */ x->avl_balance = +1, y->avl_balance = 0; w->avl_balance = 0; ```
This code is included in @refalso{157

 webmaster delorie software   privacy Copyright © 2003   by The Free Software Foundation Updated Jun 2003