Menu
CoddyTech

Binary Tree Level Order Traversal

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

ノードの値をレベルごとに返してください。まずルートの値を含むリスト、次に1つ下のレベルの値を左から右に並べたリスト、というように最深レベルまで続けます。

関数

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-array
ヒープ順序でのツリー。空の場所は -1
戻り値integer-2d-array
レベルごとに値のリストを1つずつ、最上位のレベルから順に、それぞれ左から右へ

制約

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

例

入力
tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
出力
[[4], [9, 2], [6, 8, 5], [3]]
説明
ルートの4には、インデックス1と2に子の9と2があります。インデックス3は空なので、第3レベルには6(インデックス4、9の下)、続いて8と5(インデックス5と6、2の下)があります。インデックス9の3は6の左の子で、第4レベルに単独であります。

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

challenge icon

発展問題

各レベルを並べ替えずに、1つ目は左から右へ、2つ目は右から左へ、というようにジグザグ順で返せますか?

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

ケース1

ケース2

ケース3

入力

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

期待値

[[4], [9, 2], [6, 8, 5], [3]]