【发布时间】:2019-05-04 11:07:12
【问题描述】:
我需要在 Scala 中镜像二叉树。我认为它必须像这样工作:
sealed trait BT[+A]
case object Empty extends BT[Nothing]
case class Node[+A](elem:A, left:BT[A], right:BT[A]) extends BT[A]
def mirrorTree[A](bt: BT[A]): BT[A] = bt match {
case Empty => Empty
case Node(root, left, right) => Node(root, right, left)
}
val t = Node(1,Node(2,Empty,Node(3,Empty,Empty)),Empty)
mirrorTree(t)
但它只返回我交换的第一级,我必须以递归方式为左右子树调用函数,但如果我必须从函数返回树,我不知道该怎么做,所以我不能使用运算符喜欢列表。
【问题讨论】:
-
作为附注,你应该标记你的
case classfinal!,reference。
标签: scala function functional-programming