Menu
CoddyTech

Invert Binary Tree

やさしい木の走査python iconjava iconcpp iconc iconjs icon+10

レベル順に配列 tree に格納された二分木が与えられます。根はインデックス 0 にあり、インデックス i のノードの子は 2*i+1(左)と 2*i+2(右)にあり、-1 は空の位置を示します。また、配列の末尾に余分な -1 が含まれる場合があります。

木を反転します。つまり、すべてのノードの左の子と右の子を入れ替え、木全体を鏡像にします。末尾に -1 がない形式で、反転した木を同じ形式で返してください。

関数

invertTree(tree: integer-array) → integer-array
treeinteger-array
二分木をレベル順に並べたもので、空の位置は -1 で示します
戻り値integer-array
末尾に -1 の要素を付けずに、レベル順に並べた左右反転した木

制約

  • 1 ≤ tree.length ≤ 16383
  • 各tree[i]は-1、または0 ≤ tree[i] ≤ 1000を満たす値です。
  • tree[0]が-1になることは決してないため、ツリーには少なくとも1つのノードがあります。
  • 配列の末尾には、最後のノードより後に余分な-1の要素が含まれている場合があります。
  • 空の位置の子は両方とも空で、深さは最大でも 14 です。

例

入力
tree = [5, 3, 8, 1, 4, -1, 9]
出力
[5, 8, 3, 9, -1, 4, 1]
説明
ルートの子である3と8が位置を入れ替えます。その下では、3の下にあった1と4が4と1として戻り、右の子9だけを持っていた8は、今度はそれを左に持ちます。

lock icon提出時に隠しテスト+14件

challenge icon

発展問題

反転したコピーを作成せずに、同じインデックスのペアを使って、木がそれ自身の鏡像かどうかをどのように確認しますか?

コードをリセット
def invertTree(tree):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

tree = [5, 3, 8, 1, 4, -1, 9]

期待値

[5, 8, 3, 9, -1, 4, 1]