波波老师你好,有个问题想请你帮忙解决下

来源: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回答

liuyubobobo

2019-03-15

应该和这个是一个问题,请参考:https://coding.imooc.com/learn/questiondetail/62681.html


继续加油!:)

0
5
liuyubobobo
回复
爱西瓜同志
参考我在你的新回复上的回复:)继续加油!:)
2019-03-16
共5条回复

爱西瓜同志

提问者

2019-03-15

//img.mukewang.com/szimg/5c8b6e000001e45d15960530.jpg

老师,我看到你的这个回复后,我实际debug的时候也发现了这个问题,那么说来“对successor进行的操作就相当于对node.right操作”这句话好像也是对的啊

0
2
爱西瓜同志
回复
liuyubobobo
波波老师,我理解了,谢谢哈,我以后得提高我的表达能力
2019-03-16
共2条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程