Subato

Resource Files

BinTree

Schreiben Sie in Scala für den Trait BinTree, der durch die zwei case-Klassen Empty und Branch implementiert ist, die Methoden:
  1. size():Long: Zur Berechnung der Anzahl der Elemente in der Menge.
  2. contains(e : E)(implicit ordering:Ordering[E]):Boolean: Zum Testen, ob ein gesuchtes Element in der Menge enthalten ist.
  3. add(e : E)(implicit ordering:Ordering[E]):BinTree[E]: Zum Erzeugen einer neuen Menge, in der ein weiteres Element eingefügt wurde.
Damit die Elemente einen Vergleich haben, verlangen implizit die Methoden contains und add, dass es eine Ordnung auf den Elementtyp E gibt. Durch das Import import ordering._; können die Vergleichsoperatoren auf den Elementen angewendet werden.

trait BinTree[E]{ def isEmpty() = this match { case Empty() => true case _ => false } def size():Long = 0L //TODO } def contains(e : E)(implicit ordering:Ordering[E]):Boolean ={ import ordering._; false //TODO } def add(e : E)(implicit ordering:Ordering[E]):BinTree[E] ={ import ordering._; Empty() //TODO } } case class Empty[E]() extends BinTree[E] case class Branch[E](val left:BinTree[E], val el:E, val right:BinTree[E]) extends BinTree[E] object BinTreeMain extends App{ val t1 = Empty() add 52 add -3 add 42 add 576 add -9876 add 4 add 0 println(t1) val t2 = Empty() add "das" add "pferd" add "frisst" add "keinen" add "gurkensalat" println(t2) }
scala
You are not logged in and therefore you cannot submit a solution.