我有以下代码将树的节点包含在当前树中(union方法):
class NonEmpty(elem: Tweet, left: TweetSet, right: TweetSet) extends TweetSet {
def union(that: TweetSet): TweetSet =
{
that.incl(this.elem)
return that
}
def incl(x: Tweet): TweetSet = {
if (x.text < elem.text) new NonEmpty(elem, left.incl(x), right)
else if (elem.text < x.text) new NonEmpty(elem, left, right.incl(x))
else this
}
}
object Main extends App {
// Print the trending tweets
val gizmodoTweets = TweetReader.ParseTweets.getTweetData("gizmodo", TweetData.gizmodo)
val techCrunchTweets = TweetReader.ParseTweets.getTweetData("TechCrunch", TweetData.gizmodo)
val test1: TweetSet = TweetReader.toTweetSet(gizmodoTweets)
val test2: TweetSet = TweetReader.toTweetSet(techCrunchTweets)
test1.union(test2).foreach(x=> println(x))
}
但是当我打印union方法的输出时,我没有看到this.elem
添加到that
树。为什么会这样?
答案 0 :(得分:4)
你的incl
- 方法返回一个新集合,其中包含另外两个集合的并集,但是你将结果丢弃并返回参数。
要解决此问题,请将union方法更改为:
def union(that: TweetSet): TweetSet = that.incl(this.elem)