Table::Retrieve
Search by key, return the data
bool Retrieve(const KeyType& k, DataType& d) const
{
Node * n = root_;
while(n != nullptr)
{
if (pred_(k,n->key_)) // k < n->key_ : go left
{
n = n->lchild_;
}
else if (pred_(n->key_,k)) // k > n->key_ : go right
{
n = n->rchild_;
}
else if (n->IsAlive()) // k found alive
{
d = n->data_;
return 1;
}
else
return 0;
}
return 0;
}