Ctrl K

Дописать число в дерево максимумов

Средняя
Дерево максимумов строится из массива различных чисел так: корень — наибольшее число массива, левое поддерево рекурсивно строится из части слева от него, правое — из части справа; пустая часть даёт пустое поддерево. Дан корень root такого дерева (сам массив неизвестен) и число value, которого в дереве нет. Массив дополнили: число value дописали в его конец. Верните корень дерева максимумов, построенного по новому массиву.
Пример 1
root=tree_node([9, 4, 6, None, 2]), value=5 → [9, 4, 6, None, 2, None, 5]

Дерево построено из массива [4, 2, 9, 6]. После дописывания получается [4, 2, 9, 6, 5]: корень по-прежнему 9, а справа от 6 появляется 5.

Пример 2
root=tree_node([9, 4, 6, None, 2]), value=12 → [12, 9, None, 4, 6, None, 2]

12 больше всех чисел, поэтому становится новым корнем, а всё старое дерево — его левым поддеревом: слева от 12 в массиве стоят все прежние числа.

Пример 3
root=tree_node([8, None, 3]), value=5 → [8, None, 5, 3]

Массив был [8, 3], стал [8, 3, 5]. Справа от 8 теперь часть [3, 5] с корнем 5, и 3 уходит к нему в левые дети.

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

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