removeMin(root) 的疑问
// 删除二叉树最小值所在节点,返回最小值 public E removeMin(){ E ret = minimum(); removeMin(root); // 这里,应该是要把删除节点后的新的二叉树的根节点重新赋值给root吧? root = removeMin(root); return ret; } // 删除以node为根的二叉树中的最小值所在节点 // 返回删除节点后新的二叉树的根节点 private Node removeMin(Node node){ if(node.left == null){ Node rightNode = node.right; node.right = null; size --; return rightNode; } node.left = removeMin(node.left); return node; }
bobo老师,在public E removeMin()方法中,第二句,应该要把删除节点后的新二叉树的根节点重新赋值给root吧?
否则,对于只有右子树的二叉树,比如{5,6,7},删除5后,root仍然是5所在节点。
20
收起
正在回答 回答被采纳积分+1
1回答
liuyubobobo
2022-03-05 18:47:56
赞!你学懂了,是需要的。
在这一小节视频 14:45 的地方,我加上了 root =。(你应该没看到这里,就来提问了:))
也可以参考最终代码 194 行:https://git.imooc.com/class-105/Play-Algorithms-and-Data-Structures/src/master/15-Binary-Search-Tree/13-Remove-Min-and-Max-in-BST/src/BST.java
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星