Ctrl K

Слияние двух деревьев поиска

Средняя
Даны корни двух двоичных деревьев поиска: first и second. В каждом из них для любой вершины значения левого поддерева не больше её значения, а правого — не меньше. Верните один список, в котором собраны значения всех вершин обоих деревьев, упорядоченные по неубыванию. Если значение встречается в нескольких вершинах, оно повторяется в ответе столько же раз. Любое из деревьев может быть пустым. Попробуйте обойтись без общей сортировки — воспользуйтесь тем, что деревья уже упорядочены.
Пример 1
first=tree_node([6, 2, 9]), second=tree_node([4, 1, 7]) → [1, 2, 4, 6, 7, 9]

В первом дереве 2, 6, 9, во втором 1, 4, 7. Вместе по возрастанию: 1, 2, 4, 6, 7, 9.

Пример 2
first=tree_node([3, None, 5]), second=tree_node([5, 3]) → [3, 3, 5, 5]

Повторы сохраняются: каждое значение встречается столько раз, сколько всего вершин с ним.

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

Первое дерево пустое, ответ — содержимое второго.

Ограничения
  • 0 ≤ число вершин в каждом дереве ≤ 5000
  • -10⁵ ≤ Node.val ≤ 10⁵
  • Оба дерева — корректные деревья поиска
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЭто дерево поиска? СредняяДве перепутанные вершины СредняяK-е по величине в дереве поиска СредняяДерево по столбцам СредняяСамое большое поддерево поиска Средняя
загружаем Python…
Вход
first=tree_node([6, 2, 9]), second=tree_node([4, 1, 7])
Ожидается
[1, 2, 4, 6, 7, 9]

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