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

来源:6-11 删除二分搜索树的最大元素和最小元素

爱西瓜同志

2019-03-14

private Node removeMin(Node node){
1、 if (node.left == null){
2、 Node rightNode = node.right;
3、 node.right = null;
4、 size --;
5、 return rightNode;
6、 }
node.left = removeMin(node.left);
return node;
}
一、如果这个树只有一个root根元素,那么这段代码运行到5的时候就不再运行了,返回一个null,而且size也从原本的1变成了0,但是这段代码并没有删除根元素啊?

//删除最大元素
public A removeMax(){
if (size == 0)
throw new IllegalArgumentException(“BST is Empty!”);
return removeMax(root);
}

private A removeMax(Node node){
    if (node.right == null){
        if (node.left == null){
            Node cur = node;
            node = null;
            return cur.a;
        }else{
            Node cur = node;
            node = node.left;
            return cur.a;
        }
    }
    return removeMax(node.right);
}

二、波波老师,这段删除最大元素的代码这样写可以吗?

写回答

1回答

爱西瓜同志

提问者

2019-03-14

波波老师,我想通了。不用麻烦你帮我看了

0
1
liuyubobobo
继续加油!:)
2019-03-15
共1条回复

玩转数据结构

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

6221 学习 · 1704 问题

查看课程