Menu
CoddyTech

Maximum Depth of Binary Tree

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

レベル順に配列 tree に格納された二分木が与えられます。根はインデックス 0 にあり、インデックス i のノードの子は 2*i+1(左)と 2*i+2(右)にあります。-1 は空の位置を示し、配列の末尾に余分な -1 の要素が含まれる場合があります。木の最大深さ、つまり根から葉までの最長経路上にあるノードの数を返してください。

関数

maxDepth(tree: integer-array) → integer
treeinteger-array
空の位置を -1 で表した、二分木のレベル順
戻り値integer
根から葉までの最長経路上にあるノードの数

制約

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

例

入力
tree = [5, 8, 1, -1, 3, -1, -1, -1, -1, 6]
出力
4
説明
最長の経路は 5、8、3、6(インデックスは 0、1、4、9)で、4つのノードを含みます。1 を通る経路は2つのノードの後で終わります。

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

challenge icon

発展問題

最長の根から葉までの経路の長さだけでなく、その経路上の値を返すにはどうすればよいでしょうか。複数の経路が同じ長さの場合、どの経路を返しますか。また、そのことを契約でどのように明記しますか。

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

ケース1

ケース2

ケース3

入力

tree = [5, 8, 1, -1, 3, -1, -1, -1, -1, 6]

期待値

4