Ctrl K

Наложить одно дерево на другое

Лёгкая
Даны корни двух двоичных деревьев: base и top. Положите top поверх base так, чтобы корни совпали, и дальше совмещайте вершины по одинаковым позициям: левый ребёнок к левому, правый к правому. Постройте новое дерево по правилу: - если на позиции есть вершины в обоих деревьях, в результате там вершина со значением, равным их сумме; - если вершина есть только в одном дереве, она переходит в результат вместе со своим поддеревом. Верните корень получившегося дерева (или пустое дерево, если оба исходных пустые).
Пример 1
base=tree_node([4, 1, 6, None, 2]), top=tree_node([3, -1, None, 5]) → [7, 0, 6, 5, 2]

Корни совпадают: 4 + 3 = 7. Левые дети: 1 + (-1) = 0. У этой вершины левый ребёнок есть только в top (5), правый — только в base (2). Правый ребёнок корня есть только в base (6).

Пример 2
base=tree_node([]), top=tree_node([8, None, 9]) → [8, None, 9]

Первое дерево пустое, результат совпадает со вторым.

Пример 3
base=tree_node([2, 2, 2]), top=tree_node([5]) → [7, 2, 2]
Ограничения
  • 0 ≤ число вершин в каждом дереве ≤ 2000
  • -10⁴ ≤ Node.val ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДеревья-близнецы ЛёгкаяДерево-зеркало ЛёгкаяВысота дерева ЛёгкаяГлубина ближайшего листа ЛёгкаяПуть до листа с нужной суммой Лёгкая
загружаем Python…
Вход
base=tree_node([4, 1, 6, None, 2]), top=tree_node([3, -1, None, 5])
Ожидается
[7, 0, 6, 5, 2]

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