Menu
CoddyTech

Symmetric Tree

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

レベル順に配列 tree に格納された二分木が与えられます。根はインデックス 0 にあり、インデックス i のノードの子は 2*i+1(左)と 2*i+2(右)にあります。-1 は空の位置を示し、配列の末尾に余分な -1 の要素が含まれている場合があります。根を通る垂直線を軸として木がそれ自身の鏡像になっている場合は true を、そうでない場合は false を返してください。形状と値の両方が一致する必要があります。

関数

isSymmetric(tree: integer-array) → boolean
treeinteger-array
レベル順の二分木。空の位置は -1 で表します
戻り値boolean
木が自身と鏡像関係にある場合は true、そうでない場合は false

制約

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

例

入力
tree = [1, 2, 2, 3, 4, 4, 3]
出力
true
説明
木を中央で折りたたみます。インデックス 1 と 2 にある2つの 2 が重なり、インデックス 3 と 6 にある外側の 3 が重なり、インデックス 4 と 5 にある内側の 4 が重なります。

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

challenge icon

発展問題

形状は左右対称でも、一部の値が異なる場合、木を対称にするには最少でいくつのノード値を変更する必要がありますか?

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

ケース1

ケース2

ケース3

入力

tree = [1, 2, 2, 3, 4, 4, 3]

期待値

true