Ctrl K

Копия внутри дерева

Лёгкая
Даны корни двух двоичных деревьев: большого root и образца pattern. Поддеревом узла называется сам узел вместе со всеми его потомками; всё дерево тоже считается поддеревом своего корня. Верните true, если у какого-то узла root поддерево совпадает с pattern полностью — и по форме, и по значениям в узлах. Иначе верните false.
Пример 1
root=tree_node([7, 2, 9, 1, 3]), pattern=tree_node([2, 1, 3]) → True

Узел 2 вместе со всеми потомками — ровно дерево pattern.

Пример 2
root=tree_node([7, 2, 9, 1, 3, None, None, 5]), pattern=tree_node([2, 1, 3]) → False

Под узлом 1 висит ещё 5, поэтому поддерево узла 2 больше, чем pattern, и точной копии нет.

Пример 3
root=tree_node([4, 4]), pattern=tree_node([4]) → True

Лист 4 со своими (пустыми) потомками совпадает с pattern.

Ограничения
  • В root от 1 до 2000 узлов
  • В pattern от 1 до 1000 узлов
  • −10⁴ ≤ значение узла ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлева, вершина, справа ЛёгкаяДеревья-близнецы ЛёгкаяДерево-зеркало ЛёгкаяВысота дерева ЛёгкаяРовно растущее дерево Лёгкая
загружаем Python…
Вход
root=tree_node([7, 2, 9, 1, 3]), pattern=tree_node([2, 1, 3])
Ожидается
True

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