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]]
説明
インデックス3は空なので、9には右の子である6だけがあります。第3レベルは6、8、5で、第4レベルでは6の下にあるインデックス9の3だけです。
challenge icon

発展問題

各レベルを並べ替えずに、最初は左から右へ、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]]