我正在阅读 AVL 树的教程https://www.programiz.com/dsa/avl-tree 在实施右旋 https://www.programiz.com/dsa/avl-tree # 执行右旋转的函数
def rightRotate(self, z):
y = z.left
T3 = y.right
y.right = z
z.left = T3
z.height = 1 + max(self.getHeight(z.left),
self.getHeight(z.right))
y.height = 1 + max(self.getHeight(y.left),
self.getHeight(y.right))
return y
我不明白为什么我们只需要改变这些高度。
8、9 和 11 都改变了高度,但根据我的理解,只有 9 和 11 的高度会被告知。
示例中节点(节点 8)的左子树和右子树不会受到右旋转的影响,因此该节点的高度不需要更改。 (因为一个节点的高度等于1 + max(左子树的高度,右子树的高度))。