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 项。
  • 空位置的两个子节点也都是空的,深度最多为 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