Припустимо наступне визначення червоно-чорного дерева:
- Це дерево бінарного пошуку.
- Кожен вузол забарвлений червоним або чорним кольором. Корінь чорний.
- Два вузли, з'єднані краєм, не можуть бути червоними одночасно.
- Тут має бути чітке визначення листа NIL, як на wiki. Лист НІЛ забарвлений у чорний колір.
- Шлях від кореня до будь-якого листа НІЛ містить однакову кількість чорних вузлів.
Питання
Припустимо , що ви впровадили insert
і delete
операції для червоно-чорного дерева. Тепер, якщо ви дали правильне червоно-чорне дерево, є завжди послідовність insert
і delete
операції , які будують його?
Мотивація
Це питання мотивоване цим питанням та дискусією з цього питання .
Особисто я вважаю , що якщо уявити дійсне червоно-чорне дерево , що складається тільки з чорних вузлів (що означає , що ви уявляєте ідеально збалансоване дерево), існує послідовність insert
і delete
операції , які будують його. Однак,
- Я не знаю, як точно це довести
- Мене також цікавить більш загальний випадок
insert
та delete
побудує дійсне червоно-чорне дерево, що складається лише з чорних вузлів . Він використовує вставки / делеции створити дерево висотою ч . По- перше, ми можемо створити абсолютно врівноважених червоно-чорного дерева в ширину першим способом , використовуючи 2 ч + 1 - 1 вставки, а потім з допомогою ч * 2 ч - 1вставки та стільки ж видалень перефарбовують його у абсолютно чорне дерево. Хитрість тут , щоб рухатися вгору раз найнижчий червоний шар вгору по дереву , поки він не досягне кореня.
insert
і delete
операціями?
insert
та delete
; може бути кілька способів зробити ці операції. б) Оскільки дерева RB по суті є B-деревами порядку 4, можна шукати там натхнення. Деталі можуть виявитись складними, оскільки відображення від RB до B (та / або назад) не є унікальним.