Menu
CoddyTech

Path Sum

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

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

関数

hasPathSum(tree: integer-array, targetSum: integer) → boolean
treeinteger-array
レベル順に並べた二分木。空の位置は -1 で表します。
targetSuminteger
根から葉へのパスが到達しなければならない合計
戻り値boolean
あるルートからリーフまでのパスの合計が targetSum になる場合は true、そうでない場合は false

制約

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

例

入力
tree = [3, 9, 6, -1, 2, 1, 7]targetSum = 14
出力
true
説明
パス 3、9、2(インデックス 0、1、4)の合計は 14 で、インデックス 4 の 2 は葉です。

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

challenge icon

発展問題

パスがルートから葉までに限られず、任意のノードから始まり、その下にある任意のノードで終わる場合、合計がtargetSumになるパスの数を数えられますか?

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

ケース1

ケース2

ケース3

入力

tree = [3, 9, 6, -1, 2, 1, 7]
targetSum = 14

期待値

true