Ctrl K

Суммы путей в закодированном дереве

Средняя
Двоичное дерево глубиной не больше 4 записано списком трёхзначных чисел codes — по одному на вершину: - сотни — глубина вершины d (корень на глубине 1, 1 ≤ d ≤ 4); - десятки — позиция p вершины в своём ряду, если бы дерево было полным (1 ≤ p ≤ 2^(d-1), слева направо); - единицы — значение вершины v (0 ≤ v ≤ 9). Таким образом, дети вершины на позиции p стоят на следующей глубине на позициях 2p - 1 (левый) и 2p (правый). Для каждого листа посчитайте сумму значений на пути от корня до него и верните общую сумму по всем листьям. Гарантируется, что codes задаёт корректное связное дерево.
Пример 1
codes=[117, 212, 224, 325] → 25

Корень 7 с детьми 2 и 4; у вершины 2 есть правый ребёнок 5 (позиция 2 на глубине 3). Листья — 5 и 4: пути 7 + 2 + 5 = 14 и 7 + 4 = 11, итого 25.

Пример 2
codes=[110] → 0

Дерево из одного корня со значением 0: один путь с суммой 0.

Пример 3
codes=[113, 229, 343, 488] → 23
Ограничения
  • 1 ≤ len(codes) ≤ 15
  • 110 ≤ codes[i] ≤ 489
  • codes отсортирован по возрастанию
  • codes описывает корректное двоичное дерево глубиной не больше 4
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево по прямому и симметричному обходам СредняяДерево по симметричному и обратному обходам СредняяДерево по столбцам СредняяСамая частая сумма поддерева СредняяОстановить ветку процессов Средняя
загружаем Python…
Вход
codes=[117, 212, 224, 325]
Ожидается
25

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