关于AVL树旋转修复平衡 LR 型(左-右)冲突的代码带图详解

AVL 树中 最复杂的一种旋转情况:LR 型(左-右)冲突,而这段代码:

if (balance > 1 && getBalance(root->left) < 0) {
    root->left = rotateLeft(root->left); // 对左孩子先左旋
    return rotateRight(root);            // 再对自己右旋
}

确实 容易误解,尤其是为什么是 root->left = rotateLeft(...) 而不是 root->right = ...。我们这就从最底层 带图详解

目标:

解释以下三点:

  1. 什么是 LR 型冲突?

  2. 为什么需要“先左后右”双旋?

  3. 为什么是 root->left = ... 而不是 root->right = ...

你可能感兴趣的:(c,网络,工作随笔,linux,算法,c语言)