コンピュータサイエンスの伝統では、最上部に根を持ち、最下部に葉を持つ木が与えられます。リーフノードには番号が付いています。目標は、マークされた特別な葉を取り、-1
それを上に移動して新しいルートにすることです。
[3, [[16], -1], [4]] --> [[[[4], 3], [16]]]
特別な葉を上に回転させ、残りの木を垂れ下がらせることを想像できます。すべての枝の正しい左から右の順序を取得するために、ツリーを回転させながらツリーを保持します。
新しいツリーには、を除く元のツリーの葉がすべてあり-1
ます。
入力:
葉が異なる正の整数であるツリー-1
。ただし、の1つの葉を除きます。ツリーのルートには、少なくとも2つのブランチが外れます。
入力は、ネストされたリスト[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
周りには、よりも2つのブラケットがありますが、3
1層だけ深く描かれています。