СНМ с операцией удаления за О(1)
Реализация системы непересекающихся множеств с помощью [СНМ_(реализация_с_помощью_леса_корневых_деревьев)|леса корневых деревьев] не поддерживает операцию удаления элемента из множества. Приведенная ниже модификация этой структуры данных вводит поддержку операции удаления за О(1) в худшем случае, сохраняя асимптотику для операций Union и Find и потребление памяти O(n).
Реализация
Расширение структуры данных
Расширим [СНМ_(реализация_с_помощью_леса_корневых_деревьев)|лес корневых деревьев] следующим образом:
- Для каждой вершины дерева, не являющейся листом, будем хранить двусвязный список ее детей. Будем считать, что дети упорядочены по направлению списка слева направо.
- Для корня каждого дерева храним двусвязный список его вершин, располагаемых в порядке обхода в глубину, начиная с левой вершины.
- Разделим понятия вершина дерева и элемент множества: вершиной дерева назовем объект, содержащий ссылки , и (где необходимо) для каждого из вышеперечисленных списков