|
Scala example source code file (TreeSet.scala)
The Scala TreeSet.scala source code/* NSC -- new Scala compiler * Copyright 2005-2011 LAMP/EPFL * @author Martin Odersky */ package scala.tools.nsc package util /** Sets implemented as binary trees. * * @author Martin Odersky * @version 1.0 */ class TreeSet[T >: Null <: AnyRef](less: (T, T) => Boolean) extends Set[T] { private class Tree(val elem: T) { var l: Tree = null var r: Tree = null } private var tree: Tree = null def findEntry(x: T): T = { def find(t: Tree): T = { if (t eq null) null else if (less(x, t.elem)) find(t.l) else if (less(t.elem, x)) find(t.r) else t.elem } find(tree) } def addEntry(x: T) { def add(t: Tree): Tree = { if (t eq null) new Tree(x) else if (less(x, t.elem)) { t.l = add(t.l); t } else if (less(t.elem, x)) { t.r = add(t.r); t } else t } tree = add(tree) } def iterator = { def elems(t: Tree): Iterator[T] = { if (t eq null) Iterator.empty else elems(t.l) ++ (Iterator single t.elem) ++ elems(t.r) } elems(tree) } override def toString(): String = { if (tree eq null) "<empty>" else "(..." + tree.elem + "...)" } } Other Scala examples (source code examples)Here is a short list of links related to this Scala TreeSet.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.