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

Maximum Depth of N-ary Tree(N叉树最大深度)Swift实现错误排查

问题原因

你的代码问题出在运算符优先级上:Swift 中 + 运算符的优先级高于空合运算符 ??,所以你写的表达式实际执行逻辑等价于:

return node.children.map(maxDepth).max() ?? (0 + 1)

这就导致只有当 node.children 为空、max() 返回 nil 时才会执行 +1 操作;如果子节点数组不为空,就会直接返回子节点的最大深度,没有加上当前节点本身的 1 层深度,最终结果比预期少 1。

修复方案

只需要给空合运算的部分加括号,保证无论子节点是否为空,都会在计算出子节点最大深度后统一加 1 即可:

class Solution {
    func maxDepth(_ root: Node?) -> Int {
        guard let node = root else { return 0 }
        return (node.children.map(maxDepth).max() ?? 0) + 1
    }
}

验证

修改后测试你的用例:

  • 叶子节点 three 没有子节点,子节点最大深度为 0,加 1 得到深度 1
  • 节点 two 的子节点最大深度为 1,加 1 得到深度 2
  • 根节点 one 的子节点最大深度为 2,加 1 得到深度 3,符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:42:01