Ctrl K

Сумма в полосе дерева поиска

Лёгкая
Дан корень root двоичного дерева поиска: у каждой вершины все значения в левом поддереве меньше её значения, а в правом — больше. Все значения различны. Даны также границы lo и hi. Верните сумму значений всех вершин, которые лежат в полосе от lo до hi включительно. Подумайте, как воспользоваться упорядоченностью дерева, чтобы не заходить в заведомо лишние ветки.
Пример 1
root=tree_node([8, 3, 12, 1, 5, 10, 15]), lo=4, hi=11 → 23

В полосу [4, 11] попадают 5, 8 и 10: 5 + 8 + 10 = 23.

Пример 2
root=tree_node([20, None, 30]), lo=1, hi=10 → 0

Все значения больше 10, сумма пустая — 0.

Ограничения
  • Число вершин — от 1 до 2 · 10⁴
  • 1 ≤ Node.val ≤ 10⁵
  • 1 ≤ lo ≤ hi ≤ 10⁵
  • Все значения различны, дерево — дерево поиска
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБлижайшее значение в дереве поиска ЛёгкаяСамые частые значения в дереве поиска ЛёгкаяПара в дереве поиска ЛёгкаяСамая близкая пара в дереве поиска ЛёгкаяДерево поиска в одну линию Лёгкая
загружаем Python…
Вход
root=tree_node([8, 3, 12, 1, 5, 10, 15]), lo=4, hi=11
Ожидается
23

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 53 теста на сервере, включая скрытые.