You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现sumSucc函数时如何调用succTree计算IntTree后继元素总和

sumSucc 实现方案

核心逻辑非常简单,分两步操作即可:

  1. 调用succTree处理输入的IntTree,得到所有节点值+1的后继树
  2. 遍历处理后的后继树,对所有节点的值求和

最简实现(已有树求和工具函数)

如果你的作业环境已经提供了sumTree函数(输入IntTree返回所有节点值之和的工具函数),直接组合两个函数即可:

sumSucc :: IntTree -> Int
sumSucc t = sumTree (succTree t)

你也可以用Haskell的函数组合运算符简化写法,和上面的实现完全等价:

sumSucc :: IntTree -> Int
sumSucc = sumTree . succTree

无预置sumTree的完整实现

如果没有现成的sumTree函数,你可以先自行实现该工具函数,再组合逻辑:

-- 实现树求和工具函数
sumTree :: IntTree -> Int
sumTree (Leaf x) = x
sumTree (Branch (x, xl, xr)) = x + sumTree xl + sumTree xr

-- 符合作业要求的sumSucc实现,严格调用succTree
sumSucc :: IntTree -> Int
sumSucc t = sumTree (succTree t)

这个实现和你自己写的直接递归版本输出结果完全一致,且严格满足作业要求:所有节点的加1操作都在succTree内部通过tmap完成,sumSucc没有自行实现节点值+1的逻辑。

内容的提问来源于stack exchange,提问作者Matteo Pinna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:15:06