我正在尝试删除二叉搜索树中最大的节点,我认为下面的这些代码应该能够做到这一点,但由于某种原因它不是。 有人可以帮忙吗!
public void remove() {
Node current = root;
while(true){
Node parent = current;
current = current.getRighChild();
if (current == null){
parent.setRighChild(null);
return;
}
}
}
public void remove()
{
root = deleteMax(root);
}
private Node deleteMax(Node x ) {
if (x.getRighChild() == null)
{
return x.getLeftChild();
}
x.setRighChild(deleteMax(x.getRighChild()));
return x;
}
在你的代码中,如果正确的节点是空的,你仍然在删除它。而不是删除电流,如果它是最大值。尝试这样的事情:
removeLargest() {
current = getRoot();
rightNode == null;
while (root.Right){
current == root.Right
}
if (current.left()){
rotate()
}
current.delete()
}