Menu
CoddyTech

Binary Tree Right Side View

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

木を右側から見てください。各レベルでは、最も右にあるノードだけが見え、残りは隠れます。ルートのレベルから最も深いレベルまで、その値を列挙してください。

関数

rightSideView(root: integer-array) → integer-array
rootinteger-array
ヒープ順序の木で、空の位置には -1 を使用
戻り値integer-array
各レベルの最も右の値(最上位レベルから順に)

制約

  • 1 ≤ root.length ≤ 32767
  • 各root[i]は-1、または0 ≤ root[i] ≤ 104を満たす値です。
  • ノードの値はそれぞれ異なります。
  • root[0] が -1 になることは決してないため、ツリーには少なくとも1つのノードがあります。
  • 配列は、最後のノードより後ろに余分な -1 のエントリが続くことがあります。
  • 空の場所の子は両方とも空で、木のレベル数は最大でも 14 です。

例

入力
root = [5, 2, 9, 7, 4, -1, 1, -1, 3]
出力
[5, 9, 1, 3]
説明
右側からは5、9、1(インデックス6)が見えます。第4レベルには、左部分木の7の下、インデックス8にある3だけがあります。右側にはそこまで深い位置にあるものはないため、3が見えます。
challenge icon

発展問題

すべてのノードが任意の数の子を持つことができ、それらが左から右へのリストとして格納されている木の右側面図を、どのように取得しますか?

コードをリセット
def rightSideView(root):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

root = [5, 2, 9, 7, 4, -1, 1, -1, 3]

期待される出力

[5, 9, 1, 3]