【发布时间】:2017-12-14 17:37:20
【问题描述】:
尝试连接两个列表或创建列表时类型不匹配。
我正在尝试用 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
我搜索了很多,但无法弄清楚我的代码有什么问题。任何提示都是 赞赏。
【问题讨论】:
标签: scala generics binary-tree