旋转后 AVL 树中有多少节点改变了深度

How many nodes in an AVL tree change depth after a rotation

在 AVL 树中添加或删除节点时,可能会发生重新平衡。我可以理解如何需要 O(log(n)) 重新平衡,但是当发生这些旋转以平衡树时,有多少节点实际改变了级别。我似乎无法在任何地方找到这个。我以为是 O(log(n)) 但似乎无法弄清楚为什么。将不胜感激

答案是O(n)。 假设在每个节点都有一个“深度”字段,维护它需要多少钱?

有一个定理:如果节点N的字段F中的信息完全依赖于它的直接子节点,那么在对数时间内更新(插入或删除)时可以保持。
(定理可以用归纳法证明)

“深度”字段不依赖于其子项,而是依赖于其父项。

但是请注意,定理是一种方式,意思是说什么时候可以保持对数时间,但没有说什么时候not.Therefore不能肯定地说“ depth" 字段可以保持在对数时间(例如高度或 BF 字段),甚至可以在插入时看到 O(n) 个节点改变它们的深度:

在第一次旋转中,t2 和 t4 的深度已更改,在第二次中,t1、t2 和 t3 的深度已更改!