删除最小元素代码能否如下替换

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

qq_白玉_1

2018-08-22

   private Node removeMin(Node node){
       if(node.left == null){
//            Node rightNode = node.right;
//            node.right = null;
//            return rightNode;
           size--;
           return node.right; //注释部分改为这一句
       }
        node.left = removeMin(node.left);
       return node;
   }

我们删除最小节点的时候,本质应该是改变父亲节点的左孩子指向,而注释部分代码是对待删除节点的操作,是不是不需要这么做?直接将待删除节点的右子树嫁接给父亲节点就行,java会不会把我们没操作的部分直接回收处理了?就可以用一行代码解决了。

写回答

1回答

塔拆

2018-08-23

你这样并没有删除最小的节点,它还是在那,你只是改变了node.right的指向所以node还是使用了所以不会回收

0
1
qq_白玉_1
即使使用了node.right=null,也依然使用了node,只不过是将其右孩子变为null而已,node变成了一个叶子节点,那么变成了一个叶节点子node最后是怎么处理的,是不是还是被java回收了?那么我干脆什么都不该改,全让java回收就行了,反正最后的操作都只是改变父亲节点的左指向而已。
2018-08-23
共1条回复

玩转数据结构

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

6221 学习 · 1704 问题

查看课程