Вам дано дерево, яке в традиціях інформатики має корінь вгорі і листя внизу. Листові вузли позначені цифрами. Ваша мета - взяти спеціальний лист, позначений -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 схематично шар глибше.