600000007

プログラムと折り紙のブログです。

Scala by Example‎ > 演習7.2.2解答案

Scala by Example > 演習7.2.2の解答案です。

  abstract class IntTree
  case object EmptyTree extends IntTree
  case class Node(elem: Int, left: IntTree, right: IntTree) extends IntTree
  def insert(t: IntTree, v: Int): IntTree = t match {
    case Node(e, l, r) => if (e > v) Node(e, insert(l, v), r)
    else if (e < v) Node(e, l, insert(r, v))
    else t
    case EmptyTree => Node(v, EmptyTree, EmptyTree)
  }

  def contains(t: IntTree, v: Int): Boolean = t match {
    case Node(e, l, r) => if (e == v) true
    else if (e > v) contains(l, v)
    else if (e < v) contains(r, v)
    else false
    case EmptyTree => false
  }

IntSetと比べるとcaseクラスを使う事により大分すっきりしていますね。