一、getBalanceFactor(node.left) >= 0这里的等号对于添加操作意义不大,很奇怪的是添加操作并不需要判断等于,这是否是一个巧合?(最后添加的元素没有构成等于的条件,所以还是进行了旋转)。对添加来说等于放在LR和RL里面判断也是可以的。
二、但是对于删除操作不加这个=条件的话就会报错,而且必须是LL和RR的时候添加这个条件,这是为啥?,老师之前的回答https://coding.imooc.com/learn/questiondetail/102451.html我也看了
三、以我的理解,由于添加操作是一个一个的不可能出现getBalanceFactor(node.left) == 0的情况,因为只要一打破平衡(多出一个叶子节点)那么维护机制就会启动。但是删除操作完全有可能出现getBalanceFactor(node.left) == 0的情况,这样的话就必须进行旋转,这种情况向一个方向旋转是没有问题的,然而如果进行LR或者RL,那么L或者R就会多出一个叶子(刚好和添加的感觉是相反的),这样的话平衡还是不存在的(始终会有一个地方balanceFactor=2)。不知道这样理解正确不,可能还要多消化一下。。