请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

   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会不会把我们没操作的部分直接回收处理了?就可以用一行代码解决了。

正在回答 回答被采纳积分+3

1回答

塔拆 2018-08-23 00:06:24

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

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_白玉_1 #1
    即使使用了node.right=null,也依然使用了node,只不过是将其右孩子变为null而已,node变成了一个叶子节点,那么变成了一个叶节点子node最后是怎么处理的,是不是还是被java回收了?那么我干脆什么都不该改,全让java回收就行了,反正最后的操作都只是改变父亲节点的左指向而已。
    回复 有任何疑惑可以回复我~ 2018-08-23 08:05:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信