Индексатор в бинарном дереве поиска C#

Рейтинг: 2Ответов: 1Опубликовано: 05.05.2015

Сделал бинарное дерево поиска на C#, есть перечисление (IEnumerable) элементов в порядке возрастания.

Нужно сделать индексатор (this[int i]) который бы возвращал i-й по порядку элемент, при этом сложность должна быть O(h), где h - высота дерева.

Нельзя просто возвращать this.ElementAt(i), так как при этом сложность будет O(n), где n - количество элементов в дереве.

Ответы

▲ 1

Храните для каждой вершины количество элементов в ее поддереве. Этой информации достаточно для быстрого поиска вершины по ее индексу.