removeMin(root) 的疑问
// 删除二叉树最小值所在节点,返回最小值
public E removeMin(){
E ret = minimum();
removeMin(root); // 这里,应该是要把删除节点后的新的二叉树的根节点重新赋值给root吧? root = removeMin(root);
return ret;
}
// 删除以node为根的二叉树中的最小值所在节点
// 返回删除节点后新的二叉树的根节点
private Node removeMin(Node node){
if(node.left == null){
Node rightNode = node.right;
node.right = null;
size --;
return rightNode;
}
node.left = removeMin(node.left);
return node;
}bobo老师,在public E removeMin()方法中,第二句,应该要把删除节点后的新二叉树的根节点重新赋值给root吧?
否则,对于只有右子树的二叉树,比如{5,6,7},删除5后,root仍然是5所在节点。
20
收起
正在回答 回答被采纳积分+1
1回答
liuyubobobo
2022-03-05 18:47:56
赞!你学懂了,是需要的。
在这一小节视频 14:45 的地方,我加上了 root =。(你应该没看到这里,就来提问了:))
也可以参考最终代码 194 行:https://git.imooc.com/class-105/Play-Algorithms-and-Data-Structures/src/master/15-Binary-Search-Tree/13-Remove-Min-and-Max-in-BST/src/BST.java
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星