Ctrl K

Новый лист в дереве поиска

Средняя
Дан корень root двоичного дерева поиска: в левом поддереве любой вершины значения меньше, чем в ней, в правом — больше. Все значения различны. Добавьте в дерево число value, которого в нём ещё нет. Спускайтесь от корня: если value меньше значения текущей вершины, идите влево, иначе — вправо. Когда нужного ребёнка нет, подвесьте на его место новую вершину со значением value. Остальные вершины не перемещайте. Верните корень дерева после вставки (для пустого дерева это будет новая вершина).
Пример 1
root=tree_node([10, 5, 15, None, 8]), value=7 → [10, 5, 15, None, 8, None, None, 7]

7 < 10 — идём влево к 5; 7 > 5 — вправо к 8; 7 < 8, а левого ребёнка у 8 нет — туда и вешаем 7.

Пример 2
root=tree_node([3, 1]), value=20 → [3, 1, 20]

20 больше корня, правое место у корня свободно.

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

Дерево пустое — новая вершина становится корнем.

Ограничения
  • 0 ≤ число вершин ≤ 10⁴
  • -10⁸ ≤ Node.val, value ≤ 10⁸
  • Все значения в дереве различны, value среди них нет
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСколько форм у дерева поиска СредняяЭто дерево поиска? СредняяДве перепутанные вершины СредняяДерево из упорядоченной цепочки СредняяK-е по величине в дереве поиска Средняя
загружаем Python…
Вход
root=tree_node([10, 5, 15, None, 8]), value=7
Ожидается
[10, 5, 15, None, 8, None, None, 7]

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