class RBtree : public AbstractTree {
Node *root;
Node *NIL;
public:
RBtree(MemoryManager &mem);
~RBtree(){};
/**
* Пользовательские функции
*/
public:
Node *tree_successor(Node *n);
class Iterator : public AbstractTree::Iterator {
Node *begin;
Node *end;
Node *cur;
/**
* Виртуальные функции
*/
public:
bool hasNext(); //
};
};
Node *RBtree::tree_successor(Node *n) {
if (n->right != this->NIL) {
return this->tree_minimum(n->right);
}
Node *y = n->parrent;
while (y != this->NIL && n == y->right) {
n = y;
y = y->parrent;
}
return y;
}
bool RBtree::Iterator::hasNext() {
Node *n = cur;
// Как мне тут вызвать функцию tree_successor(n); ???
// ...
}
Определение функции я менять не могу!