scala中二叉树的最大深度

时间:2017-08-14 15:29:44

标签: algorithm scala binary-tree

我正在使用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行代码,但我没有犯错,相信我;)

1 个答案:

答案 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
 * }
 */