永发信息网

Scala 二叉树

答案:1  悬赏:30  手机版
解决时间 2021-04-01 12:21
Scala 二叉树
最佳答案
///用foldLeft就可以了,我重新定义了泛型,应该比较完美了
trait Tree[+T]

case object Empty extends Tree[Nothing]

case class Node[T](val value: T, val left: Tree[T], val right: Tree[T]) extends Tree[T]

////////////////////////

def insert[T](x: T, tree: Tree[T])(implicit order: Ordering[T]): Tree[T] = {
tree match {
case Empty => Node(x, Empty, Empty)
case Node(v, left, right) if order.gt(x, v) => Node(v, left, insert(x, right))
case Node(v, left, right) if order.lt(x, v) => Node(v, insert(x, left), right)
case Node(v, left, right) if order.equiv(x, v) => Node(v, left, right) //其实没有必要重新创建

}
}
def mkBinarySearchTree[T](list: List[T])(implicit order: Ordering[T]) = {
list.foldLeft[Tree[T]](Empty)((tree, value) => insert(value, tree))
}
def main(args: Array[String]) {
mkBinarySearchTree(List(1, 2, 3))
}追问请问Tree[T]和 Tree 有什么区别 我是初学者 谢谢追答泛型哦,用Tree[T]的话,可以支持任意类型的Tree。比如你这里的Tree,相当于Tree[Int]追问那 要生成一个新的树t' 是如何实现的? 万飞感谢追答这里的insert就是生成新的树哦,case里的每个分支最后都是一颗新的树
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
想问问各位大神,我的苹果手机可以连接Wi-Fi
孜然酱的功效
如何辨别钢丝胎和尼龙胎
腹部胸部背部肌肉刺痛,偶尔肌肉跳动怎么回事
一个数若刚好与小于它的所有因子之和相等,则
谁有余罪2,
应该 可能 肯定 有什么区别 意思一样么
寿阳县景尚乡哪有吊车出租的?
阿林专业发型设计室怎么去啊,有知道地址的么
汽车信用卡一辆车能办几个银行的
崩坏学园23.8北欧秘银锤怎么样
篮球运动员的精彩细节描写
8266如何使用jlink
实在理解不了大家为什么说幻影是土豪职业
有一铜砚台不知道是什么年代的
推荐资讯
换个苹果6手机的屏幕大约多少钱
沈阳到辽阳动车是到辽阳西站还是辽阳站前?急
扼腕是什么意思?
滚珠丝杠的螺距跟导程是不是一样?要是不一样
我想问的是得了面瘫后能去外面吗,风
05版20元人民币错版币值多少
寻郑玉燕手机号码,酬谢
杜黄裳,字遵素,京兆万年人。擢进士第,又中
刘师傅是某精密仪器厂的一名检测员.某天,他
耍龙灯诗歌赞
请你仿照《春》的结尾,以“夏”为主题,写几
有关BB 淘金蛋掌握这几点你一定玩得好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?