我正在使用Scala对leetcode进行练习。我正在研究的问题是"二进制树的最大深度",这意味着找到二叉树的最大深度。
我已经使用IntelliJ传递了我的代码,但在Leetcode中提交我的解决方案时,我一直遇到编译错误(类型不匹配)。这是我的代码,有任何问题或任何其他解决方案吗?
object Solution {
abstract class BinTree
case object EmptyTree extends BinTree
case class TreeNode(mid: Int, left: BinTree, right: BinTree) extends BinTree
def maxDepth(root: BinTree): Int = {
root match {
case EmptyTree => 0
case TreeNode(_, l, r) => Math.max(maxDepth(l), maxDepth(r)) + 1
}
}
}
错误在于:Line 17: error: type mismatch; Line 24: error: type mismatch;
我知道这很奇怪,因为我只有13行代码,但我没有犯错,相信我;)
答案 0 :(得分:3)
这看起来像是一个特定于leetcode问题的错误。 我假设您指的是https://leetcode.com/problems/maximum-depth-of-binary-tree/description/
也许你不应该重新实现数据结构,而只是提供maxDepth
的实现,即TreeNode
已经给出。试试这个:
object Solution {
def maxDepth(root: TreeNode): Int = {
if (root == null) {
0
} else {
Math.max(maxDepth(root.left), maxDepth(root.right)) + 1
}
}
}
这假设TreeNode
数据结构是注释中给出的结构:
/**
* Definition for a binary tree node.
* class TreeNode(var _value: Int) {
* var value: Int = _value
* var left: TreeNode = null
* var right: TreeNode = null
* }
*/