Ctrl K

Корпоратив без прямых начальников

Средняя
Структура компании — двоичное дерево: в корне root директор, у каждого сотрудника не больше двух прямых подчинённых. Значение в узле — насколько этот человек оживит корпоратив. Никто не хочет веселиться рядом со своим *прямым* начальником, поэтому нельзя приглашать одновременно сотрудника и его непосредственного руководителя. Начальник начальника — можно. Верните наибольшую суммарную «оживлённость», которую можно получить, выбрав список гостей.
Пример 1
root=tree_node([5, 1, 2, 4, 6, None, 3]) → 18

Выгоднее всего позвать 4, 6 и 3 (у каждого начальник — 1 или 2, их не зовём) и ещё директора 5: 5 + 4 + 6 + 3 = 18.

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

Сотрудник со вкладом 9 перевешивает всех остальных вместе: позвать директора и обоих подчинённых 9 — это 2 + 1 + 1 = 4 < 9.

Пример 3
root=tree_node([7]) → 7
Ограничения
  • В дереве от 1 до 10⁴ узлов
  • 0 ≤ Node.val ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамое большое поддерево поиска СредняяСпуск зигзагом СредняяСамый тяжёлый путь в дереве СложнаяМинимум охранников на дереве СложнаяСамое тяжёлое поддерево поиска Сложная
загружаем Python…
Вход
root=tree_node([5, 1, 2, 4, 6, None, 3])
Ожидается
18

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