Ctrl K

Поддерево с лучшим средним

Средняя
Дан корень root двоичного дерева. Поддерево узла — это сам узел вместе со всеми его потомками, а его среднее — сумма значений в нём, делённая на число узлов. Найдите наибольшее среднее среди поддеревьев всех узлов дерева. Ответ принимается, если он отличается от точного не больше чем на 10⁻⁵.
Пример 1
root=tree_node([5, 1, 10, None, None, 2, 3]) → 5.0

У узла 10 поддерево {10, 2, 3}, его среднее (10 + 2 + 3) / 3 = 5. У всего дерева среднее 21 / 5 = 4.2, у листьев 1, 2 и 3 — их собственные значения. Лучшее 5.0.

Пример 2
root=tree_node([0, None, 7, 4]) → 5.5

Лист 4 даёт 4, поддерево узла 7 — (7 + 4) / 2 = 5.5, всё дерево — 11 / 3 ≈ 3.67. Ответ 5.5.

Пример 3
root=tree_node([4]) → 4.0
Ограничения
  • В дереве от 1 до 10⁵ узлов
  • 0 ≤ значение узла ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЭто дерево поиска? СредняяДве перепутанные вершины СредняяВсе пути до листьев с заданной суммой СредняяДерево в правую цепочку СредняяСумма чисел на ветвях Средняя
загружаем Python…
Вход
root=tree_node([5, 1, 10, None, None, 2, 3])
Ожидается
5.0

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