1. BST 1.1 Определение, хранение 1.2 Поиск 1.3 Add (+код) 1.4 асимптотика find и add, пример-бамбук 1.5 Симметричный обход 1.6 next, prev, применение как итератор в сет 1.7 Прошивка, next и prev за O(1) 1.8 Хештаблица, find за O(1) 1.9 delete. Также читерский delete. 1.10 Одинаковые ключи: подходы (счётчик, принудительное отличие, слабые инварианты) 2. AVL 2.1 Функция height, single rotation 2.2 Инвариант AVL, почему глубина ~ 2log(n) 2.3 Add. Делаем не более одного поворота. 2.5 Операции для практики: delete, merge, split 3. Неявный ключ 3.1 Поддерживаем функцию size, операции IndexOf, ByIndex 3.2 Ключи не нужны, работаем с BST как с массивом 4. B-tree 4.1 Определение. 4.2 Find. Асимптотика O(log_k(n) * search(k)) = O(log(n)) 4.3 Мотивация зачем нужно B-tree (жёсткий диск) 4.4 [skip] Операция add 4.5 [skip] Операция delete 4.6 [skip] Вариации B-tree (больше ключей, меньше (B*), данные в листьях (B+)) 4.7 [skip] Определение 2-3-tree, 2-3-4-tree 4.8 [skip] Красно-чёрное дерево, связь с 2-3-4-tree, применение в STL 4.9 [skip] AA-tree, связь с 2-3-tree.