树在scala中表示为元组
发布时间:2020-12-16 18:45:05 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一个函数来计算表示为元组的树的节点. object Main { def count[T](tree:Seq[T]):Int= { if (lst == ()) 0 else count(tree(1)) + count(tree(2)) + 1 } def main(args: Array[String]) { val lst3 = (2,(6,(8,(),()),(5,())),(4,(3,(10,())))
我正在尝试编写一个函数来计算表示为元组的树的节点.
object Main { def count[T](tree:Seq[T]):Int= { if (lst == ()) 0 else count(tree(1)) + count(tree(2)) + 1 } def main(args: Array[String]) { val lst3 = (2,(6,(8,(),()),(5,())),(4,(3,(10,()))) println(count(lst3)) } } 我怎样才能在scala中实现这一点? 解决方法
这不是使用元组的正确方法. Scala是一种静态类型语言,因此不应将元组用作任意对象的通用容器.
树应该用以下类来表示: trait Tree { def value: Int } case class Branch(value: Int,children: Seq[Tree]) extends Tree case class Leaf(value: Int) extends Tree 然后你可以这样做: def count(t: Tree): Int = t match { case Branch(v,children) => 1 + children.map(count).sum case Leaf(v) => 1 } 所以: val x = Branch(7,Seq(Branch(8,Seq(Leaf(1),Leaf(2))),Leaf(3))) count(x) // 5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |