我正在尝试理解 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;
}