本题在二叉树上统计根到叶子路径,且路径上不能出现连续两个负值结点(0 视为非负)。需一次 DFS 同时求最大合法路径和、是否存在和 ≥threshold、合法路径总数。
cur_sum、上一结点是否为负 prev_neg。进入结点时若当前为负且 prev_neg 为真,则该向下延伸的路径前缀已非法,剪枝返回。max_val、count,并检查 cur_sum >= threshold 置 has_path_ge = 1。count == 0,max_val 置为 −2147483648。天命人深入盘丝洞,洞内布满了蜘蛛精设下的迷阵。整座洞穴呈二叉树结构,每个结点是一间石室,石室中藏有灵气结晶(整数,可正可负,零值视为非负)。
天命人从根石室出发,寻找通往叶子石室的路径收集灵气。但盘丝洞有毒瘴禁制:路径上不允许出现连续两个或以上灵气值为负的石室。
叶子石室的定义:左右子结点均为空的结点。
请实现一个函数,在一遍遍历中同时计算以下三个指标:
二叉树根节点 root,整数 threshold
包含 3 个整数的数组 [max_val, has_path_ge, count]:
二叉树采用层次遍历方式序列化表示:
示例:{10,−5,20,#,8,−6,15} 表示:

解析规则:根节点为 10,左子节点 −5(其左子为空 #,右子为 8),右子节点 20(左子 −6,右子 15)。
| 项目 | 范围 |
|---|---|
| 节点数 | 0≤n≤105 |
| 节点值 | −100≤val≤100 |
| 树深度 | ≤104 |
| 阈值 | −109≤threshold≤109 |
空树说明:当 n=0 时返回 [−2147483648,0,0]。
输入
{10,-5,20,#,8,-6,15},40
输出
[45,1,3]
说明
二叉树结构:

从根到叶子共 3 条路径:
最大合法路径和 = 45,存在路径和 ≥40,合法路径数 = 3。
输入
{-5,-3,#,#,-7},-100
输出
[-2147483648,0,0]
说明
二叉树结构:

从根到叶子仅 1 条路径:
输入
{5,-3,#,#,8,-2,#,#,10},18
输出
[18,1,1]
说明
二叉树结构:

从根到叶子仅 1 条路径:
最大合法路径和 = 18,存在路径和 ≥18,合法路径数 = 1。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册