| | | | | |

Implementing Retrieve

template <typename T, class P>
bool BST<T,P>::Retrieve (T& t) const
{
  Node *  n = root_;    // travels down the tree
  while(n != nullptr)
  {
    if (pred_(t,n->value_))       // t < n->value_ : go left
    {
      n = n->lchild_;
    }
    else if (pred_(n->value_,t))  // t > n->value_ : go right
    {
      n = n->rchild_;
    }
    else                          // t == n->value_ : found
    {
      if (n->IsDead()) return 0;  // tombstones not in set
      t = n->value_;
      return 1;
    }
  }
  return 0;
}

| | Top of Page | 12. Binary Search Trees - 13 of 27