Data structures AVL树插入和删除期间最坏情况下的旋转次数

Data structures AVL树插入和删除期间最坏情况下的旋转次数,data-structures,tree,avl-tree,Data Structures,Tree,Avl Tree,在AVL树中,插入和删除n个元素期间最坏的旋转次数是多少 我认为对于插入,它应该是O(n),对于删除,它应该是O(nlogn)。然而,我对删除不是很确定 我说的对吗?对于插入或删除节点x这两种操作,有些情况下需要在所有节点上进行从x到根的旋转。因为有n个节点的树的高度是O(logn),所以两种操作的最坏情况都是O(logn)旋转。对于n个插入/删除操作,其结果为O(n logN)。对于插入元素,我们最多可以进行2次旋转,因此对于n个元素,我们可以进行2n或O(n)次旋转,对吗?您不会对所有元素执

在AVL树中,插入和删除n个元素期间最坏的旋转次数是多少

我认为对于插入,它应该是O(n),对于删除,它应该是O(nlogn)。然而,我对删除不是很确定


我说的对吗?

对于插入或删除节点x这两种操作,有些情况下需要在所有节点上进行从x到根的旋转。因为有n个节点的树的高度是O(logn),所以两种操作的最坏情况都是O(logn)旋转。对于n个插入/删除操作,其结果为O(n logN)。

对于插入元素,我们最多可以进行2次旋转,因此对于n个元素,我们可以进行2n或O(n)次旋转,对吗?您不会对所有元素执行旋转,只对插入的元素及其祖先执行旋转。每次插入/删除节点x时,在x上的断开高度平衡旁边,它也可能在x的父节点上断开。因此,除了x上的旋转之外,还必须检查x的父对象上是否需要旋转。递归地,从x向上遍历到根,直到不需要旋转为止。在最坏的情况下,您将完成根的旋转,这将提供O(logn)时间。是的,您需要移动到根,插入元素时需要O(logn)。但最终一个元素最多只能旋转两次。在这个问题上,我只关心旋转的次数,而不关心穿越的次数。啊,我明白你的意思了。每个插入的元素最多需要2次旋转是正确的。但是,为了保持AVL标准为真,需要遍历到根。因此,每个元素最多有2个logn=O(logn)旋转。对于n个元素,它是O(n logn)旋转。即使删除,每个元素也是O(logn)旋转吗?