private TreeMapNode topNode = null;
public void Add(IComparable key, object value)
topNode = new TreeMapNode(key, value);
public object Get(IComparable key)
return topNode == null ? null : topNode.Find(key); }
internal class TreeMapNode
private static readonly int LESS = 0;
private static readonly int GREATER = 1;
private TreeMapNode[] nodes = new TreeMapNode[2];
public TreeMapNode(IComparable key, object value)
public object Find(IComparable key)
if (key.CompareTo(this.key) == 0)
return FindSubNodeForKey(SelectSubNode(key), key);
private int SelectSubNode(IComparable key)
return (key.CompareTo(this.key) < 0) ? LESS : GREATER;
private object FindSubNodeForKey(int node, IComparable key)
return nodes[node] == null ? null : nodes[node].Find(key);
public void Add(IComparable key, object value)
if (key.CompareTo(this.key) == 0)
AddSubNode(SelectSubNode(key), key, value);
private void AddSubNode(int node, IComparable key, object value)
nodes[node] = new TreeMapNode(key, value);
nodes[node].Add(key, value);