Você recebe uma árvore que, na tradição da ciência da computação, tem a raiz na parte superior e as folhas na parte inferior. Os nós das folhas são rotulados com números. Seu objetivo é pegar a folha especial marcada -1
e movê-la para ser a nova raiz.
[3, [[16], -1], [4]] --> [[[[4], 3], [16]]]
Você pode imaginar girando a folha especial para o topo e deixando o resto da árvore pendurar nela. Mantenha a árvore no plano enquanto a gira para obter a ordem correta da esquerda para a direita de todos os galhos.
A nova árvore possui todas as folhas da árvore original, exceto -1
.
Entrada:
Uma árvore cujas folhas são inteiros positivos distintos, exceto uma folha de -1
. A raiz da árvore terá pelo menos dois galhos saindo.
A entrada é fornecida como uma lista aninhada [3, [[16], -1], [[4]]]
ou como sua representação de string. Os delimitadores são opcionais e dependem de você, mas os números adjacentes precisam ser separados.
Resultado:
Saída ou imprima a árvore invertida no mesmo formato que sua entrada. A ordem das entradas da lista deve estar correta. A modificação no local está correta.
Se sua entrada / saída é um tipo de dados, deve ser aquele que é impresso no formato exigido por padrão. Built-ins que basicamente fazem a tarefa para você não são permitidos.
Casos de teste:
>> [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
possui mais dois suportes ao redor do que o3
, mas é diagramado apenas 1 camada mais a fundo.