public:
void insertItem(const Key& k, const Element& e) // insert (key,element)
{ inserter(k, e); }
protected:
BTPosition inserter(const Key& k, const Element& e) { // insert utility
BTPosition p = finder(k, T.root()); // find insertion spot
while (T.isInternal(p)) // key already exists?
p = finder(k, T.rightChild(p)); // look further
T.expandExternal(p); // add new node here
setItem(p, BSTItem(k, e)); // store (key,element)
return p; // return this position
}