AVL ツリーの次のコードを理解しようとしていますが、問題があります。木が重いままだと右回転することを知っています。右重い場合も同様で、左回転します。以下のコードを理解する上で、誰かが説明したり、正しい方向に向けてくれたりしていただければ幸いです。
static void avl_rotate_right(TLDList *tld, TLDNode *node) {
if (node->parent != NULL) {
if (node->parent->left == node)
node->parent->left = node->left;
else
node->parent->right = node->left;
} else
tld->root = node->left;
node->left->parent = node->parent;
node->parent = node->left;
node->left = node->left->right;
if (node->left != NULL)
node->left->parent = node;
node->parent->right = node;
}