remove(key) { this.root = this.removeNode(this.root, key) } removeNode(node, key) { if (node === null) { return null } if (key < node.key) { node.left = this.removeNode(node.left, key); return node } else if (key > node.key) { node.right = this.removeNode(node.right, key); return node } else { if (node.left === null && node.right === null) { node = null; return node } if (node.right === null) { node = node.left; return node } else if (node.left === null) { node = node.right; return node } const minKey = this.minNode(node.right); node.key = minKey; this.removeNode(node.right, minKey); return node; } }
|