Ctrl K

K-й по весу уровень дерева

Средняя
Дан корень root двоичного дерева и целое положительное число rank. *Вес уровня* — это сумма значений всех вершин, которые находятся на одинаковом расстоянии от корня. Отсортируйте веса всех уровней по убыванию и верните тот, что окажется на месте номер rank (нумерация с единицы). Одинаковые веса занимают разные места. Если уровней в дереве меньше, чем rank, верните -1.
Пример 1
root=tree_node([4, 7, 2, 1, None, 9, 3]), rank=2 → 9

Суммы уровней: 4, затем 7 + 2 = 9, затем 1 + 9 + 3 = 13. По убыванию: 13, 9, 4 — второе место у 9.

Пример 2
root=tree_node([6, 3, 3, None, 6]), rank=1 → 6

Все три уровня весят по 6: и первое место, и любое другое — 6. Равные суммы считаются отдельно.

Пример 3
root=tree_node([2, 5, 1]), rank=3 → -1

Вершины три, а уровней всего два (2 и 5 + 1 = 6), третьего места нет — ответ -1.

Ограничения
  • Число вершин — от 2 до 10⁵
  • 1 ≤ Node.val ≤ 10⁶
  • 1 ≤ rank ≤ число вершин
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево по столбцам СредняяСтолбцы дерева с ничьими СложнаяДерево по этажам СредняяЗмейка по уровням дерева СредняяУровни дерева снизу вверх Средняя
загружаем Python…
Вход
root=tree_node([4, 7, 2, 1, None, 9, 3]), rank=2
Ожидается
9

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