Репозиторий содержит решения этой и этой задачи с ulearn.me. Задачи прошли код-ревью у преподавателя (баллы: 50/50, 100/100). Все решения курса на максимальный балл также выложены в других репозиториях. Ветка unsolved содержит изначальный проект.
Конечное приложение - библиотека для бинарного дерева поиска.
В этой и следующей задаче нужно будет реализовать структуру данных «Бинарное дерево поиска».
Реализуйте бинарное дерево так, как это описано в видеолекциях с двумя операциями:
Add(T key);
bool Contains(T key);
Эти два метода должны быть реализованы без использования рекурсии.
В этой задаче вам предстоит реализовать ещё две операции с деревом.
Реализуйте интерфейс IEnumerable<T>
в вашем дереве так, чтобы перечисление элементов происходило в порядке их возрастания и имело сложность O(n), где n — количество элементов в дереве.
Реализуйте индексатор T this[int i]
у дерева, возвращающий i-ый по порядку (в порядке возрастания) элемент, содержащийся в дереве.
Сложность этой операции должна быть O(h), где h — высота дерева.
Для решения этой задачи для каждого узла дерева вам придется хранить и поддерживать еще и размер его поддерева.
Для простоты, обе операции реализуйте с использованием рекурсии.