波波老师你好,有个问题想请你帮忙解决下
来源:6-12 删除二分搜索树的任意元素
爱西瓜同志
2019-03-15
private Node remove(Node node , A a){
if (node == null)
return null;
if (a.compareTo(node.a) < 0){
node.left = remove(node.left , a);
return node;
}else if (a.compareTo(node.a) > 0){
node.right = remove(node.right , a);
return node;
}else{
if (node.left == null){
Node rightNode = node.right;
node.right = null;
size --;
return rightNode;
}
if (node.right == null){
Node leftNode = node.left;
node.left = null;
size --;
return leftNode;
}
Node successor = findMin(node.right);
//successor.left = node.left;
**1 successor.right = removeMin(node.right);
2 successor.left = node.left;
node.right = node.left = null ;
return successor;
}
}
波波老师,为什么1和2这两行交换位置这个方法就出错了?
2回答
-
052019-03-16
-
爱西瓜同志
提问者
2019-03-15
老师,我看到你的这个回复后,我实际debug的时候也发现了这个问题,那么说来“对successor进行的操作就相当于对node.right操作”这句话好像也是对的啊
022019-03-16
相似问题