517
518
private _delete(key: K, superStr: boolean): void {
520
>
const stack: [Dir, TernarySearchTreeNode<K, V>][] = [];
521
>
let node = this._root;
522
>
523
>
// find node
524
>
while (node) {
525
>
const val = iter.cmp(node.segment);
526
>
if (val > 0) {
527
// left
528
stack.push([Dir.Left, node]);
529
node = node.left;
531
// right
532
stack.push([Dir.Right, node]);
533
node = node.right;
535
// mid
536
iter.next();
537
stack.push([Dir.Mid, node]);
538
node = node.mid;
540
>
break;
541
>
}
542
>
}
543
>
544
>
if (!node) {
545
// node not found
546
return;
547
}
549
>
if (superStr) {
550
// removing children, reset height
551
node.left = undefined;