Я изучаю красно-черные деревья, и я читаю книгу «Введение в алгоритмы» Кормена. Теперь я пытаюсь создать красно-черное дерево с цифрами 1-10, используя псевдокод, описанный в книге - RB-INSERT-FIXUP (T, z). Вот скриншот Является ли Red-Black tree сбалансированным
Все было нормально, пока я не вставил цифру «6» в дерево. Согласно псевдокоде я получаю следующий результат
Как вы можете видеть все красно-черные требования деревьев встречались, но я смущен, потому что я знаю, что красно-черное дерево должно быть сбалансировано на каждом шагу.
Я могу вручную выполнить процедуру «с левым поворотом» с помощью «2» и «4» и изменить цвета. В таком случае я получаю следующий результат, который уравновешивается соответствующего
Так что мой вопрос:
Это нормально иметь неравные дерева ?, или я что-то пропустил во время вставки узлов?
Я думаю, что дерево rb может стать неуравновешенным до 2 log n в глубину. вы должны это проверить. идеально сбалансированное дерево грубо логарифмически n в глубину. неуравновешенность в rb-древе не так плоха, чтобы испортить ее большую O для различных операций. – thang