root двоичного дерева. Его **левый край** — это цепочка из корня, его левого ребёнка, левого ребёнка того и так далее, пока левые дети не кончатся. Гарантируется, что у самой нижней вершины левого края нет правого ребёнка.
Переверните дерево вдоль левого края. Для каждой вершины края, у которой есть левый ребёнок L:
- L становится родителем этой вершины;
- сама вершина становится **правым** ребёнком L;
- её бывший правый ребёнок (если был) становится **левым** ребёнком L и переезжает вместе со всем своим поддеревом, внутри которого ничего не меняется.
В итоге самая нижняя вершина левого края превращается в новый корень. Верните его. Пустое дерево остаётся пустым.root=tree_node([5, 8, 3, 6, 9]) → [6, 9, 8, None, None, 3, 5]
Самая левая вершина 6 становится корнем; её брат 9 — левым ребёнком, родитель 8 — правым. Затем у 8 левым ребёнком становится 3, а правым — бывший корень 5.
root=tree_node([4, 2, None, 7]) → [7, None, 2, None, 4]
Правых детей нет вообще, поэтому левый путь 4 → 2 → 7 просто разворачивается в правый путь 7 → 2 → 4.
root=tree_node([1, 2, 3, 4, None, 5, 6]) → [4, None, 2, 3, 1, 5, 6]
Новый корень — 4, у неё нет брата, поэтому левый ребёнок пуст, а правый — 2. У 2 левым ребёнком становится 3 вместе со всем своим поддеревом (5 и 6 остаются при ней), правым — 1.
Node.val ≤ 1000root=tree_node([5, 8, 3, 6, 9])
[6, 9, 8, None, None, 3, 5]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 57 тестов на сервере, включая скрытые.