root двоичного дерева поиска и границы lo и hi. Удалите из дерева все вершины, значения которых не попадают в отрезок [lo, hi].
Оставшиеся вершины должны сохранить взаимное расположение: если вершина x была потомком вершины y и обе остались, то x и дальше потомок y. Такое дерево определяется однозначно. Верните его корень — он может отличаться от исходного, а если не осталось ни одной вершины, верните пустое дерево.root=tree_node([8, 3, 12, 1, 6, 10, 15]), lo=4, hi=11 → [8, 6, 10]
3 и 1 меньше 4: на место 3 поднимается её правый ребёнок 6. 12 и 15 больше 11: на место 12 поднимается 10. Остаётся 8 с детьми 6 и 10.
root=tree_node([5, 2, None, None, 4]), lo=3, hi=9 → [5, 4]
Выпадает только 2, и её правый ребёнок 4 становится левым ребёнком 5.
root=tree_node([7, 2, 9]), lo=10, hi=20 → None
Ни одно значение не попало в диапазон — дерево пустое.
root — корректное дерево поискаroot=tree_node([8, 3, 12, 1, 6, 10, 15]), lo=4, hi=11
[8, 6, 10]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 30 тестов на сервере, включая скрытые.