请稍等 ...
×

采纳答案成功!

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

getBalanceFactor(node.left) >= 0的问题

老师,在这个条件判断上想向您请教一下:
我理解这句是要保证我们添加的节点在第一个不平衡节点(代码中的node)的左侧(代码中的node.left)的左侧(node.left.left),总的来说,node.left.left变高了,导致node.left变高了,导致node不平衡了。
那么来考察node.left的balance factor,如果之前node.left.left比node.left.right矮1,那么node.left.left变高之后,现在balance factor的确是0了,但是node.left的高度应该不会变化,因为高度等于1 + max(height(left), height(right)),node.left的高度还是1 + node.left.right。
所以我感觉,只有可能本来node.left.left就和node.left.right一样高,getBalanceFactor(node.left) >= 1。
烦请老师指出我哪里想错了。

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

1回答

liuyubobobo 2020-04-21 17:49:12

我理解你的问题是:对于 add 操作,getBalanceFactor 不会是 0,最少是 1。


你的判断是正确的。


不过,在这里,我们写的维护代码,后续也会使用在 remove 中,在 remove 的过程中,可能出现 == 0 的情况。


具体可以参考这里:https://coding.imooc.com/learn/questiondetail/102451.html 


继续加油!:)

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信