不用removeMin是因为他没有维护height,只是简单地删掉了子树里最左边的那个点(也就是最小的点),这个点其实没有被真的删掉而是被调到上面去顶替被真正删掉的点。而如果原来决定右侧子树height的较长的主干线中包含了这个最小点,这个主干线的height其实会-1,不做维护的话可能会发生一个节点height是5,但是左子树height是3的情况,而往后递归的过程中,仍旧把这个子树按照height为5来计算(其实应该是4了)。可能就会造成不平衡的树但是上层的递归却判断不出来。
还有个地方
if (balanceFactor > 1 && getBalanceFactor(retNode.left) >= 0)
return rightRotate(retNode);
LL的判断中 getBalanceFactor(retNode.left) == 0 的情况是不是不会存在?