Вам дано дерево, которое в традициях информатики имеет корень вверху и листья внизу. Узлы листа обозначены цифрами. Ваша цель - взять специальный лист с пометкой -1
и переместить его вверх, чтобы он стал новым корнем.
[3, [[16], -1], [4]] --> [[[[4], 3], [16]]]
Вы можете представить, как повернуть специальный лист наверх и позволить ему повиснуть на дереве. Держите дерево в плоскости, поворачивая его, чтобы получить правильный порядок слева направо всех ветвей.
У нового дерева есть все листья исходного дерева, кроме -1
.
Входные данные:
Дерево, листы которого являются различными положительными целыми числами, для одного листа за исключением -1
. Корень дерева будет иметь по крайней мере , две ветви отрываясь.
Вход задается в виде вложенного списка , как [3, [[16], -1], [[4]]]
и его строковое представление. Разделители являются необязательными и зависят от вас, но соседние числа должны быть разделены.
Выход:
Выход или распечатать перевернутое дерево в том же формате, что и ваш вклад. Порядок записей в списке должен быть правильным. Модификация на месте в порядке.
Если ваш ввод / вывод относится к типу данных, он должен по умолчанию печататься в требуемом формате. Встроенные модули, которые в основном делают задачу для вас не допускаются.
Тестовые случаи:
>> [3, [[16], -1], [4]]
[[[[4], 3], [16]]]
>> [2, -1]
[[2]]
>> [44, -1, 12]
[[12, 44]]
>> [[[[-1]]], [[[[4]]]]]
[[[[[[[[[4]]]]]]]]]
>> [[1, 2, 3], [4, -1, 6], [7, 8, 9]]
[[6, [[7, 8, 9], [1, 2, 3]], 4]]
>> [9, [8, [7, [6, -1, 4], 3], 2], 1]
[[4, [3, [2, [1, 9], 8], 7], 6]]
4
Имеет еще две скобки вокруг него , чем3
, но только 1 схематически слой глубже.