Ctrl K

Дерево поиска в одну линию

Лёгкая
Дан корень root двоичного дерева поиска: в левом поддереве любой вершины все значения меньше её значения, в правом — больше. Перестройте дерево в «линию»: вершина с наименьшим значением становится корнем, у каждой вершины нет левого ребёнка, а правым ребёнком идёт вершина со следующим по величине значением. Верните новый корень.
Пример 1
root=tree_node([20, 10, 30, None, 15]) → [10, None, 15, None, 20, None, 30]

По возрастанию значения идут так: 10, 15, 20, 30. Новый корень — 10, у каждой вершины есть только правый ребёнок.

Пример 2
root=tree_node([4, 2, 6, 1, 3, 5, 7]) → [1, None, 2, None, 3, None, 4, None, 5, None, 6, None, 7]

Полное дерево из семи вершин вытягивается в цепочку 1 → 2 → … → 7.

Пример 3
root=tree_node([42]) → [42]

Одна вершина уже является цепочкой.

Ограничения
  • 1 ≤ число вершин ≤ 100
  • 0 ≤ Node.val ≤ 1000
  • Дерево является двоичным деревом поиска, значения различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиk ключей рядом с целью СложнаяПара из двух деревьев поиска СредняяСлева, вершина, справа ЛёгкаяСначала родитель, потом дети ЛёгкаяСначала дети, потом родитель Лёгкая
загружаем Python…
Вход
root=tree_node([20, 10, 30, None, 15])
Ожидается
[10, None, 15, None, 20, None, 30]

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