On vous donne un arbre qui, dans la tradition informatique, a la racine en haut et les feuilles en bas. Les nœuds foliaires sont étiquetés avec des nombres. Votre objectif est de prendre la feuille spéciale marquée -1
et de la déplacer pour devenir la nouvelle racine.
[3, [[16], -1], [4]] --> [[[[4], 3], [16]]]
Vous pouvez imaginer faire tourner la feuille spéciale vers le haut et laisser le reste de l'arbre en suspendre. Garder l'arbre dans le plan tout en le faisant tourner pour obtenir l'ordre correct de gauche à droite de toutes les branches.
Le nouvel arbre a toutes les feuilles de l'arbre d'origine à l'exception de -1
.
Contribution:
Un arbre dont les feuilles sont des entiers positifs distincts, à l'exception d'une feuille de -1
. La racine de l'arbre aura au moins deux branches qui se détacheront.
L'entrée est donnée sous la forme d'une liste imbriquée [3, [[16], -1], [[4]]]
ou de sa représentation sous forme de chaîne. Les délimiteurs sont facultatifs et dépendent de vous, mais les numéros adjacents doivent être séparés.
Production:
Sortez ou imprimez l'arborescence inversée dans le même format que votre entrée. L'ordre des entrées de la liste doit être correct. La modification sur place est très bien.
Si votre entrée / sortie est un type de données, ce doit être celui qui imprime par défaut au format requis. Les éléments intégrés qui font essentiellement la tâche pour vous ne sont pas autorisés.
Cas de 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
a deux supports supplémentaires autour de lui3
, mais n'est représenté que 1 couche plus profondément.