Ti viene dato un albero, che nella tradizione informatica ha la radice nella parte superiore e le foglie nella parte inferiore. I nodi foglia sono etichettati con numeri. Il tuo obiettivo è quello di prendere la foglia speciale contrassegnata -1
e spostarla verso l'alto per essere la nuova radice.
[3, [[16], -1], [4]] --> [[[[4], 3], [16]]]
Puoi immaginare di ruotare la foglia speciale verso l'alto e lasciare che il resto dell'albero penda da esso. Mantenere l'albero nel piano mentre lo si ruota per ottenere l'ordine corretto da sinistra a destra di tutti i rami.
Il nuovo albero ha tutte le foglie dell'albero originale tranne -1
.
Ingresso:
Un albero le cui foglie sono interi positivi distinti, ad eccezione di una foglia di -1
. La radice dell'albero avrà almeno due rami che si staccano.
L'input è dato come un elenco nidificato [3, [[16], -1], [[4]]]
o come rappresentazione di stringa. I delimitatori sono opzionali e dipende da te, ma i numeri adiacenti devono essere separati.
Produzione:
Stampa o stampa l'albero capovolto nello stesso formato dell'input. L'ordine delle voci dell'elenco deve essere corretto. La modifica sul posto va bene.
Se l'input / output è un tipo di dati, deve essere quello che stampa nel formato richiesto per impostazione predefinita. Non sono consentiti incorporati che svolgono sostanzialmente il compito per te.
Casi test:
>> [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
ha due staffe intorno ad esso rispetto alla3
, ma è solo diagramed 1 strato più profondo.