******** fig4.39 ********** /* This function can be called only if k2 has a left child. */ /* Perform a rotate between a node (k2) and its left child. */ /* Update heights */ /* Then return new root */ avl_ptr s_rotate_left( avl_ptr k2 ) { avl_ptr k1; k1 = k2->left; k2->left = k1->right; k1->right = k2; k2->height = max( height(k2->left), height(k2->right) ) + 1; k1->height = max( height(k1->left), k2->height ) + 1; return k1; /* New root */ }