在scala中向树添加元素

时间:2016-11-25 10:41:04

标签: scala

我有以下代码将树的节点包含在当前树中(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树。为什么会这样?

1 个答案:

答案 0 :(得分:4)

你的incl - 方法返回一个新集合,其中包含另外两个集合的并集,但是你将结果丢弃并返回参数。

要解决此问题,请将union方法更改为:

def union(that: TweetSet): TweetSet = that.incl(this.elem)