scala - 如何镜像二叉树?
问题描述
我需要在 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 Node(root, left, right) => Node(root, mirrorTree(right), mirrorTree(left))
推荐阅读
- shacl - 如何创建 SHACL 规则以从 rdfs:subClassOf 推断 rdf:type
- ios - Xcode 版本 11.4 (11E146) 中的自定义 Siri 意图生成中断
- python - 如何使用连接到数据库的python创建动态网站
- database - 仅将 Wordpress 中的特定数据库项目从暂存迁移到实时
- mongodb - 如何使用 @Query -> Spring data mongo 从 @DBRef 文档中获取数据
- react-native - React Native Webview OnLoad 调用了两次
- windows - 任务计划程序 BAT、PS1、VBS,无法运行
- r - ggplot中的掩码等效?
- jquery - 引导选项卡不需要的切换
- python - SQLalchemy:查询返回非结果