Деревья поиска (4 декабря 2014)
- Интерфейсы
- HashTable: add, del, find
set<int>
: add, del, find, lower_bound, next, prev
- BST: add, del, find, lower_bound, next, prev, nth_element, calc_function(L,R)
- Дерево по неявному ключу: add(i), del(i), nth_element, calc_function(L, R)
- Реализация дерева по неявному ключу на примере недо-AVL [code]
- Сравнение различных деревьев
- AVL, RB
- Treap, Splay − деревья со split и merge: удобно считать функцию на отрезке, в случае неявного ключа можно менять местами куски массива за O(logn)
- Splay − статическая оптимальность (элементы, к которым мы часто обращаемся, проталкиваются наверх)
- RB-tree
- RB-Tree → 2-3-4-tree → 2-3-tree
- AA-Tree − версия RB-Tree, в которой красным может быть только правый сын
- Добавление в 2-3-Дерево. k-tree − обобщение 2-3-tree (оно же B*-tree).
- Персистентные структуры данных
- Дерево без overhead
- Массив, любая структура с overhead в O(logn) раз
- Делаем наше недо-AVL дерево персистентным [code]