Сбалансированное бинарное дерево поиска, вдохновлённое SortedDictionary из C#. Хранит пары ключ-значение в отсортированном порядке, поддерживает вставку, удаление, поиск и преобразование в список. 🚀
Insert(KeyType key, const T& data)— Добавляет пару ключ-значение.Remove(KeyType key)— Удаляет элемент по ключу.Find(KeyType key)— Возвращает указатель на значение по ключу (илиnullptr, если не найдено).ToList()— Возвращает список всех пар ключ-значение в порядке ключей.CountNodes()— Возвращает статистику количество узлов на каждом уровне (для анализа структуры).
💡 Зависимости: Всё импортируется через
#include "cs/types.h". Ничего лишнего!
#include "cs/types.h"
int main() {
SortedDictionary<int, String> dict;
dict.Insert(3, "three");
dict.Insert(1, "one");
dict.Insert(2, "two");
dict.Insert(4, "four");
dict.Insert(5, "five");
// [(1, one), (2, two), (3, three), (4, four), (5, five)]
dict.Remove(1);
std::cout << dict << '\n'; // [(2, two), (3, three), (4, four), (5, five)]
std::cout << dict.CountNodes() << '\n'; // [(0, 1), (1, 2), (2, 1)]
return 0;
}- Реализовано как AVL-дерево для автоматической балансировки.
- Ключи хранятся в отсортированном порядке (требуется поддержка сравнения для
KeyType). - Поддерживает любые типы для ключей и значений, если ключи можно сравнивать.
- Эффективные операции вставки, удаления и поиска благодаря сбалансированности.
- Метод
ToListвозвращает упорядоченный список пар для удобной обработки. - Запрещены копирование и присваивание для безопасности работы с деревом.