root из size вершин; size нечётно, и вершины помечены различными числами от 1 до size.
Сначала первый игрок занимает вершину со значением first_pick, затем второй занимает любую другую вершину. Дальше игроки ходят по очереди, начиная с первого. За ход игрок занимает одну свободную вершину, соседнюю с какой-нибудь из уже занятых им (соседи — левый ребёнок, правый ребёнок и родитель). Если таких вершин нет, игрок пропускает ход. Когда ходить не может никто, побеждает тот, кто занял больше вершин.
Вы — второй игрок. Верните True, если можно так выбрать первую вершину, чтобы гарантированно победить, иначе False.root=tree_node([1, 2, 3, 4, 5, 6, 7]), size=7, first_pick=2 → True
Если второй игрок займёт вершину 1, вся часть дерева выше и правее 2 — вершины 1, 3, 6, 7 — достанется ему: 4 вершины против 3.
root=tree_node([1, 2, 3, 4, 5, 6, 7]), size=7, first_pick=1 → False
Корень делит дерево на две половины по 3 вершины. Второй игрок может отрезать себе только одну из них, и первый игрок заберёт другую: 3 против 4.
root=tree_node([3, 1, None, 2]), size=3, first_pick=1 → False
size нечётноsize вершинsizeroot=tree_node([1, 2, 3, 4, 5, 6, 7]), size=7, first_pick=2
True
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 17 тестов на сервере, включая скрытые.