尝试提一个小优化
private Node removeMin(Node node) {
if (node.left == null) {
Node right = node.right;
node.right = null;
return right;
}
node.left = removeMin(node.left);
return node;
}
改成
private Node removeMin(Node node) {
if (node.left == null) {
Node right = node.right;
node.right = null;
return right;
}
if (node.left.left == null)
node.left = removeMin(node.left);
return node;
}
感觉只有删除一个节点后,上一个节点才需要对left赋值,其他点击不需要再次对left赋值了
23
收起
正在回答
1回答
这个代码是不正确的。
如果 root.left.left != null 的话,调用 removeMin(root),你的代码将什么都不做,直接返回 root。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星