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 は葉です。
challenge icon

発展問題

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

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

テスト #1

テスト #2

テスト #3

引数

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

期待される出力

true