Ctrl K

Одно дерево с точностью до перестановок

Средняя
Даны корни двух двоичных деревьев first и second. Разрешается выбрать в первом дереве любой узел и поменять местами его левое и правое поддеревья; так можно сделать с любым числом узлов. Верните True, если такими операциями первое дерево можно превратить во второе (одинаковая форма и одинаковые значения в соответствующих узлах), и False иначе.
Пример 1
first=tree_node([4, 7, 2, None, 5]), second=tree_node([4, 2, 7, None, None, 5]) → True

Меняем местами детей корня 4: слева окажется 2, справа 7. У узла 7 ребёнок 5 был правым — меняем детей и у 7, он становится левым. Деревья совпали.

Пример 2
first=tree_node([1, 2, 3]), second=tree_node([1, 2, 4]) → False

Во втором дереве есть 4, а в первом нет — никакие перестановки этого не исправят.

Пример 3
first=tree_node([]), second=tree_node([8]) → False

Пустое дерево не совпадает с деревом из одного узла.

Ограничения
  • 0 ≤ число узлов в каждом дереве ≤ 100
  • 0 ≤ Node.val ≤ 99
  • Внутри каждого дерева значения узлов разные
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЭто дерево поиска? СредняяДве перепутанные вершины СредняяВсе пути до листьев с заданной суммой СредняяДерево в правую цепочку СредняяСумма чисел на ветвях Средняя
загружаем Python…
Вход
first=tree_node([4, 7, 2, None, 5]), second=tree_node([4, 2, 7, None, None, 5])
Ожидается
True

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