如何删除二叉搜索树中最大的节点



我正在尝试删除二叉搜索树中最大的节点,我认为下面的这些代码应该能够做到这一点,但由于某种原因它不是。 有人可以帮忙吗!

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()
        } 

最新更新