Version 5 of RBTree

Updated 2009-10-16 00:02:13 by PhilipSmolen

RBTree is an extension that implements Red-Black trees, roughly a cross between an ordered list while having direct access features similar to array. RBTree was written by Philip Smolen. See also: Complex data structures

RBTree is avaliable at [L1 ] with source code at [L2 ]. Versions 1.1.2 and later are distributed under a Tcl BSD-style license.

From the README

   RBTree is a TCL extension which adds a new data type to TCL.

   The new data type is a red-black tree.  Roughly speaking, this is a cross
   between an array and an ordered list.  It can efficiently find a value in
   the tree, like an array.  But it can also find the closest value to value
   that is not in the tree, or all the values between two values, like an
   ordered list.  Most operations are O(log(n)).  It can provide an
   alternative to lsort which more appropriate in interactive programs.  The
   red-black tree works correctly with keys with embedded nulls; built in TCL
   arrays do not.

Lars H (10 Jun 2003): Is this a correct description from the script point of view, or is it just what things look like from the C point of view? In general Tcl strings, nulls are encoded so that they don't terminate the C string. Is there some exception from this with respect to array indices?

The RBTree documentation is just a little out of date. In TCL 8.0 about 90% of the TCL core could use strings with embedded nulls. You could not use embedded nulls in array keys, and a few other places. Newer versions of TCL work better with embedded nulls.

   This data type is implemented as a new TCL data type.  It may be stored in
   a variable, passed to or from a procedure, converted to a string, etc.

   New procedures are added to access this data type.  They can give the
   appearance of a map (i.e. an array, or a keyed list), a multimap, a set,
   or a multiset (i.e. a bag).

Category Package | Category Data Structure