Ctrl K

Цепочка вниз по дереву

Средняя
Даны односвязный список chain и корень root двоичного дерева. Проверьте, можно ли найти в дереве путь, который идёт строго вниз — от какой-то вершины к её ребёнку, потом к ребёнку этого ребёнка и так далее, — и значения на котором в точности совпадают со значениями chain по порядку, от первого узла до последнего. Путь может начинаться в любой вершине, не обязательно в корне, и заканчиваться где угодно, не обязательно в листе. Верните True, если такой путь есть, иначе False.
Пример 1
chain=list_node([3, 1]), root=tree_node([5, 3, 8, None, 1]) → True

В дереве есть путь вниз 3 → 1: от левого ребёнка корня к его правому ребёнку.

Пример 2
chain=list_node([5, 8, 2]), root=tree_node([5, 3, 8, None, 1]) → False

Путь 5 → 8 есть, но у вершины 8 нет детей, так что 2 продолжить не может.

Пример 3
chain=list_node([5, 3, 1]), root=tree_node([5, 3, 8, None, 1]) → True

Путь может начинаться и в корне: 5 → 3 → 1.

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

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