C ++ расширяет структуру данных STL

Мое требование — иметь возможность быстро получить минимальное и максимальное значение в дереве. (Обратите внимание, не ключ минимума / максимума, а мин / макс спутниковых данных).

Дерево будет основано на строках в качестве ключей, и каждый узел будет хранить с ним целое число. Это целое число обязательно должно меняться и постоянно обновляться. Ключи остаются фиксированными

Я подумывал об использовании подхода, описанного Вот увеличения красного черного дерева, так что каждый узел хранит максимум (максимум левого максимума и правого максимума и себя), аналогичный минимуму.

Поэтому, когда я обновляю узел, я просто обновляю мин / макс каждого узла, который был пройден, чтобы достичь моего текущего узла.

Что было бы лучшим подходом, чтобы избежать переписывания реализации STL красного / черного дерева.

0

Решение

Вы не можете использовать контейнер STL (например, set(что технически даже не требует от меня BST, насколько я знаю), так как он не предоставляет вам доступ к базовой структуре.

Ваши варианты:

  • Как вы уже упоминали, пишите свой собственный BST.

  • Просто используйте вторичный BST (или кучу), который упорядочен по вашему целочисленному значению.

  • Использование Boost’s multi_index_container.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]