scala:尝试连接两个列表或创建列表时键入不匹配

现在编码

尝试连接两个列表或创建列表时,键入不匹配。

我正在尝试使用Scala实现一个非常简单的二叉树并进行有序遍历,并List在遍历过程中将树节点的值插入,并List在遍历完成后返回该值。

我的树定义如下:

abstract class Tree[+T]

case class Node[T](v: T, lft: Tree[T], rght: Tree[T]) extends Tree

case class Leaf[T](v: T) extends Tree

我的有序遍历方法如下:

object prog {
    def inorder[T](t: Tree[T]): List[T] = t match {
        case Node(v, lft, rght) => inorder(lft) ++ (v::inorder(rght))
        case Leaf(lf) => List(lf)
    }
}

该代码被Scala编译器拒绝,并显示以下错误消息:

tree.scala:28: error: type mismatch;
 found   : List[Any]
 required: List[T]
        case Node(v, lft, rght) => inorder(lft) ++ (v::inorder(rght))
                                                ^
tree.scala:29: error: type mismatch;
 found   : lf.type (with underlying type Any)
 required: T
        case Leaf(lf) => List(lf)
                            ^
two errors found

我忙了很多,但无法弄清楚我的代码出了什么问题。任何提示将不胜感激。

现在编码
case class Node[T](v: T, lft: Tree[T], rght: Tree[T]) extends Tree

case class Leaf[T](v: T) extends Tree

应该:

case class Node[T](v: T, lft: Tree[T], rght: Tree[T]) extends Tree[T]

case class Leaf[T](v: T) extends Tree[T]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章