getBalanceFactor(node.left) >= 0的问题
来源:12-5 左旋转和右旋转的实现
Ian_Song
2020-04-21
老师,在这个条件判断上想向您请教一下:
我理解这句是要保证我们添加的节点在第一个不平衡节点(代码中的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。
烦请老师指出我哪里想错了。
写回答
1回答
-
liuyubobobo
2020-04-21
我理解你的问题是:对于 add 操作,getBalanceFactor 不会是 0,最少是 1。
你的判断是正确的。
不过,在这里,我们写的维护代码,后续也会使用在 remove 中,在 remove 的过程中,可能出现 == 0 的情况。
具体可以参考这里:https://coding.imooc.com/learn/questiondetail/102451.html
继续加油!:)
10
相似问题