Вопрос об интервью: максимизируйте очки против оппонента, предсказав самый длинный маршрут в бинарном дереве - PullRequest
0 голосов
/ 30 ноября 2018

Сегодня мне задали этот вопрос на собеседовании, и я был совершенно в тупике.Предположим, есть игра, которая принимает форму бинарного дерева, где каждый узел имеет уникальное значение и до трех указателей, указывающих на родителя и 0, 1 или 2 дочерних элемента.Оппонент выбирает узел, с которого нужно начать, и, как только вы выберете свой начальный узел, вы оба одновременно выберете пути, по которым будете следовать, и добавите узел, к которому он ведет, к каждому из ваших доменов.Вы можете выбрать любой путь из узлов в вашем текущем домене, ведущий к узлам, еще не добавленным в ваш домен ИЛИ к оппоненту.Другими словами, любые узлы, заявленные вами или вашим оппонентом, запрещены для вас обоих, что означает отсутствие путей возврата к узлам, на которые вы уже заявили, и вы и ваш оппонент можете эффективно блокировать друг друга от веток, требуя узлы, которые делаютВ противном случае ветвь необратима.

Цель состоит в том, чтобы максимизировать количество узлов в вашем домене, каждый из которых стоит одного очка, и выиграть игру, если это возможно.У вас есть доступ к корневому узлу дерева и узлу, выбранному вашим оппонентом в качестве исходного места в качестве параметров.

1 Ответ

0 голосов
/ 30 ноября 2018

Итак, если я правильно понимаю правила игры, похоже, я бы просто сравнил максимальные высоты поддеревьев, окружающих начальный узел вашего противника.Поскольку это бинарное дерево, существует не более 3 возможных поддеревьев (родительских и 2 дочерних), на которые нужно обратить внимание.После того, как вы выбрали свой узел, просто следуйте по пути с большинством узлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...