36 Видалення елемента в 2 - 3 дереві

36 Видалення елемента в 2 - 3 дереві

36 Видалення елемента в 2 - 3 дереві.

При видаленні ключа з вузла виникають три варіанти.

1) Якщо після видалення ключа в вузлі міститься два ключі, то після видалення нічого не змінюється.

2) Якщо ж у ключа після видалення залишився один елемент, то перевіряємо кількість нащадків другої дитини того вузла, дитиною якого є вузол з видаляється ключем. Якщо у нього двоє дітей, то присвоюємо йому залишився один елемент. Вершину, що залишилася без дітей, видаляємо рекурсивно.

3) Інакше у нього три дитини. Тоді присвоюємо вузлу з одним ключем один з цих ключів, таким чином отримуючи два вузла з двома ключами.

1. Знайти позицію видаляється елемента по ключу До

2. if елемент не лист then

3. Поміняти його з наступним за значенням

5. Видалити елемент з листа

6. if лист-порожній then fix (лист);

1. if (n-корінь) then

4. Встановити p на батьківський вузол

5. if брат має 2 ключі then

6. Перерозподілити елементи між братом, батьком і листом.

7. if (n - внутрішній вузол) then

8. Перемістити одного з синів від брата до вузла n.

10. Установити S на брата вузла n.

11. Перемістити ключ з p в S

12. if (n-внутрішній вузол) then

13. приєднати дочірній вузол вузла n до S

14. видалити вузол n

15. if (p - порожній) then then fix (p)

Схожі статті