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

LeetCode Swift二叉树前序遍历遇TreeNode类型转换错误

问题报错原因及解决方案

报错根因

这个类型转换错误是命名空间下的类型冲突导致的:

  • LeetCode Swift判题环境已经内置了全局的TreeNode类定义,不需要提交者额外实现
  • 你本地自定义的TreeNode类和LeetCode内置的TreeNode属于完全不同的两个类型,判题逻辑传入的内置TreeNode实例无法匹配你代码里要求的自定义TreeNode参数,因此触发报错

解决方法

第一步:删除自定义TreeNode代码

提交到LeetCode的代码里删掉所有你自己写的TreeNode类定义,直接使用平台内置的类型即可。

第二步:提交标准格式的解题代码

参考可直接通过的前序遍历递归实现代码如下:

class Solution {
    func preorderTraversal(_ root: TreeNode?) -> [Int] {
        var res = [Int]()
        dfs(root, &res)
        return res
    }
    
    private func dfs(_ node: TreeNode?, _ res: inout [Int]) {
        guard let node = node else { return }
        res.append(node.val)
        dfs(node.left, &res)
        dfs(node.right, &res)
    }
}

本地调试兼容方案

如果需要在本地Playground调试代码,可以给自定义的TreeNode加上DEBUG编译条件宏,避免提交时出现类型冲突:

#if DEBUG
public class TreeNode {
    public var val: Int
    public var left: TreeNode?
    public var right: TreeNode?
    public init() { val = 0; left = nil; right = nil }
    public init(_ val: Int) { self.val = val; left = nil; right = nil }
    public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
        self.val = val
        self.left = left
        self.right = right
    }
}
#endif

测试用例验证

上述代码可覆盖所有要求的测试场景:

  • 输入root = [1,null,2,3]:输出[1,2,3]
  • 输入空root:输出空数组
  • 输入root = [1]:输出[1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:39:03