public E removeMin(){
E ret = minmum();
//removeMin(root);
root = removeMin(root);
return ret;
}
private Node removeMin(Node node){
if(node.left == null){
node = node.right;
size --;
return node;
}
node.left = removeMin(node.left);
return node;
}
老师您好,请问一下关于删除二分搜索树最小元素的问题,这里面的删除逻辑我都懂,但是我不明白为什么在removeMin()函数里面要root = removeMin(root);我尝试过直接removeMin(root),调试后一般情况下是正常的,但是当树只有两个节点时就会删除不了,列如{5,6},遍历后还是【5,6】,但是有了root = removeMin(root),就正常输出6了;removeMin(root)传入了root这个成员变量,那在执行完函数后root不是也会直接发生改变吗,为什么还要在将返回的node赋值给root呢?