在对我的二叉搜索树中的一个整数值调用delete()之后,该数字仍未从bst中删除,并且未给出错误,因此无法弄清楚问题,谢谢
delete(data) {
function removeNode(node, data) {
if (node === null) {
return node;
}
if (data === node.data) {
if (node.right === null && node.left === null) {
node = null;
return node;
} else if (node.right === null) {
node = node.left;
return node
} else if (node.left === null) {
node = node.right;
return node
} else {
// node with two leaves
var tempNode = node.right;
while (tempNode.left !== null) {
tempNode = tempNode.left;
}
node.data = tempNode.data;
tempNode = null;
}
} else if (data < node.data) {
node.left = removeNode(node, data);
return node;
} else if (data > node.data) {
removeNode(node.right, data);
return node;
}
}
this.root = removeNode(this.root, data);
}
}
const mybst = new BST();
mybst.add(20);
mybst.add(25);
console.log(mybst.findMax());
console.log(mybst.findMin());
mybst.delete(25);
console.log(mybst.findMax());
///我希望在这种情况下可以删除25,但是登录mybst.findMax()时我仍然有25。谢谢。