Давайте предположим следующее определение красно-черного дерева:
- Это двоичное дерево поиска.
- Каждый узел окрашен в красный или черный цвет. Корень черный.
- Два узла, соединенные ребром, не могут быть одновременно красными.
- Здесь должно быть хорошее определение листа NIL, как на вики. Лист NIL окрашен в черный цвет.
- Путь от корня до любого листа NIL содержит такое же количество черных узлов.
Вопрос
Предположим , что вы внедрили insert
и delete
операции для красно-черного дерева. Теперь, если вам дано правильное красно-черное дерево, всегда ли есть последовательность insert
и delete
операции, которые его строят?
мотивация
Этот вопрос мотивирован этим вопросом и обсуждением этого вопроса .
Лично я считаю, что если вы представляете себе правильное красно-черное дерево, состоящее только из черных узлов (что подразумевает, что вы представляете себе идеально сбалансированное дерево), существует последовательность insert
и delete
операции, которые его строят. Тем не мение,
- Я не знаю, как точно доказать это
- Я также заинтересован в более общем случае
insert
и delete
для построения корректного красно-черного дерева, состоящего только из черных узлов . Он использует вставки / делеции создать дерево высотой ч . Сначала мы можем создать идеально сбалансированное красно-черное дерево в ширину, используя 2 h + 1 - 1 вставки, затем используя h ∗ 2 h - 1вставки и такое же количество удалений перекрашивают его в абсолютно черное дерево. Хитрость здесь в том, чтобы подняться в раз по самому низкому красному слою вверх по дереву, пока оно не достигнет корня.
insert
и delete
операций?
insert
и delete
; может быть несколько способов сделать эти операции. б) Так как деревья RB по сути являются B-деревьями порядка 4, можно искать вдохновение. Детали могут оказаться хитрыми, поскольку отображение из RB в B (и / или в обратном направлении) не является уникальным.