Вывод элементов бинарного дерева поиска в определенном интервале
Задача:
Дано бинарное дерево поиска и два значения. Вывести все элементы бинарного дерева поиска, находящиеся в заданном значениями интервале.
Решение:
Решением будет модифицированный вариант обхода дерева, в котором мы исключим из обхода/проигнорируем значения некоторых нод.
Для примера, рассмотрим следующее дерево:

Предположим, нас интересуют ноды в диапазоне 3 - 7. В этом случае, мы исключаем из обхода ноды 1, 9 и 10.
Ноды 2 и 8, несмотря на то, что они не принадлежат искомому диапазону, исключать из обхода нельзя, т.к. ноды 3 и 7 являются потомками нод 2 и 8, соответственно. Мы просто проигнорируем их значения, т.к. они не входят в диапазон.
В качестве алгоритма обхода я выбрал inorder, т.к. для бинарного дерева поиска данный алгоритм выведет значения в возрастающем порядке.
Обход можно написать рекурсивно либо интеративно. Больше информации об итеративных обходах можно найте с посвященному этому посте.
Решение (рекурсивное и итеративное):
https://gist.github.com/codekrolik/d886c4395d475298d0be
Тесты:
https://gist.github.com/codekrolik/a6f7a9aeb3a925c6fe64
