Te dan un árbol que, en la tradición de la informática, tiene la raíz en la parte superior y las hojas en la parte inferior. Los nodos de hoja están etiquetados con números. Su objetivo es tomar la hoja especial marcada -1
y moverla hacia arriba para que sea la nueva raíz.
[3, [[16], -1], [4]] --> [[[[4], 3], [16]]]
Puedes imaginar rotar la hoja especial hacia la parte superior y dejar que el resto del árbol cuelgue de ella. Mantener el árbol en el plano mientras lo gira para obtener el orden correcto de izquierda a derecha de todas las ramas.
El nuevo árbol tiene todas las hojas del árbol original, excepto -1
.
Entrada:
Un árbol cuyas hojas son enteros positivos distintos, a excepción de una hoja de -1
. La raíz del árbol tendrá al menos dos ramas saliendo.
La entrada se proporciona como una lista anidada [3, [[16], -1], [[4]]]
o como su representación de cadena. Los delimitadores son opcionales y dependen de usted, pero los números adyacentes deben separarse.
Salida:
Imprima o imprima el árbol invertido en el mismo formato que su entrada. El orden de las entradas de la lista debe ser correcto. La modificación en el lugar está bien.
Si su entrada / salida es un tipo de datos, debe ser uno que imprima en el formato requerido de forma predeterminada. Las funciones integradas que básicamente hacen la tarea por usted no están permitidas.
Casos de prueba:
>> [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
tiene dos corchetes más a su alrededor que el3
, pero está diagramado solo 1 capa más profundo.