} else {
last = n.next;
}
+ node.key = null;
+ node.value = null;
node = null;
_size--;
}
return b;
}
+ private inline void clear_subtree (owned Node<G> node) {
+ node.key = null;
+ node.value = null;
+ clear_subtree ((owned) node.left);
+ clear_subtree ((owned) node.right);
+ }
+
/**
* {@inheritDoc}
*/
public override void clear () {
- first = last = root = null;
+ if (root != null) {
+ clear_subtree ((owned) root);
+ first = last = null;
+ }
_size = 0;
stamp++;
}
} else {
_last = n.prev;
}
+ node.key = null;
node = null;
_size--;
}
return b;
}
+ private inline void clear_subtree (owned Node<G> node) {
+ node.key = null;
+ clear_subtree ((owned) node.left);
+ clear_subtree ((owned) node.right);
+ }
+
/**
* {@inheritDoc}
*/
public override void clear () {
- _first = _last = root = null;
+ if (root != null) {
+ clear_subtree ((owned) root);
+ first = last = null;
+ }
_size = 0;
stamp++;
}