Menu
CoddyTech

Diameter of Binary Tree

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

二分木が配列 tree にレベル順で格納されています。ルートはインデックス 0 にあり、インデックス i のノードの子は 2*i+1(左)と 2*i+2(右)にあります。-1 は空の位置を示し、配列の末尾に余分な -1 の要素が含まれる場合があります。木の直径、つまり任意の 2 つのノード間の最長経路に含まれる辺の数を返してください。その経路はルートを通る場合も、1 つの部分木の中にとどまる場合もあります。

関数

diameterOfBinaryTree(tree: integer-array) → integer
treeinteger-array
二分木をレベル順に並べ、空の位置には -1 を指定します
戻り値integer
2つのノード間の最長経路上の辺の数

制約

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

例

入力
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
出力
4
説明
パス 7、4、3、8、6(インデックス 9、4、1、0、2)には、4つの辺で結ばれた5つのノードがあります。ルートで方向を変えます。左側に3つの辺、右側に1つの辺を下ります。

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

challenge icon

発展問題

直径の一方の端からもう一方の端までの経路そのもの、つまりノードの値を返すにはどうすればよいでしょうか?

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

ケース1

ケース2

ケース3

入力

tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]

期待値

4