AK: Add a method to remove an iterated node from a RedBlackTree

This will also advance the passed iterator so that it remains valid.
This commit is contained in:
Zaggy1024 2026-05-16 18:08:58 -05:00 committed by Gregory Bertilson
parent c4514c27ab
commit ecae6f42cd

View file

@ -559,6 +559,25 @@ public:
return temp;
}
V remove_and_advance(Iterator& iterator)
{
VERIFY(!iterator.is_end());
auto* node = iterator.m_node;
auto* successor = static_cast<Node*>(BaseTree::successor(node));
iterator.m_node = successor;
BaseTree::remove(node);
V temp = move(node->value);
node->right_child = nullptr;
node->left_child = nullptr;
delete node;
return temp;
}
bool remove(K key)
{
auto* node = BaseTree::find(this->m_root, key);