Ctrl K

Упорядочить уровни дерева обменами

Средняя
Дан корень root двоичного дерева, все значения в котором различны. За одну операцию можно выбрать две вершины на одном уровне (на одинаковом расстоянии от корня) и поменять их значения местами. Верните наименьшее число операций, после которых на каждом уровне значения, прочитанные слева направо, будут строго возрастать.
Пример 1
root=tree_node([4, 9, 2, 1, 7, 8, 3]) → 3

На уровне 1 меняем 9 и 2. На уровне 2 стоят 1, 7, 8, 3: меняем 7 и 3, получаем 1, 3, 8, 7, затем 8 и 7. Всего три обмена.

Пример 2
root=tree_node([6, 3, 8]) → 0

Уровни уже упорядочены: [6] и [3, 8].

Пример 3
root=tree_node([10, 20, 5, None, None, 40, 30]) → 2

Один обмен на уровне 1 (20 и 5) и один на уровне 2 (40 и 30).

Ограничения
  • 1 ≤ число вершин ≤ 10⁵
  • 1 ≤ Node.val ≤ 10⁵
  • Все значения различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево по этажам СредняяЗмейка по уровням дерева СредняяУровни дерева снизу вверх СредняяДерево глазами наблюдателя справа СредняяДерево по столбцам Средняя
загружаем Python…
Вход
root=tree_node([4, 9, 2, 1, 7, 8, 3])
Ожидается
3

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