algorithm - 一次 AVL 树插入/删除需要多少次余额检查

标签 algorithm data-structures avl-tree

我一直在阅读关于 AVL 树的文献,发现它没有详细说明在 AVL 树插入/删除中需要多少平衡检查。

比如插入一个节点后,是否需要检查从新节点到根节点的余额?或者我们可以在轮换完成后停止吗?

使用复制左子树中最右边节点的策略进行删除怎么样?从新删除的(左子树中最右边的节点)节点到根节点查找?我们可以在轮换完成后停止吗?

最佳答案

插入后,需要更新树上每个“父”的平衡因子,直到根;所以它是 O(log n) 更新的最大值。但是您只需进行一次重组即可将树恢复到它的不变量。

在删除之后,就像插入一样,您将必须一直更新树上的平衡因子;所以又是 O(log n) 更新。但是,与插入不同,您可能有多个重组旋转来将树恢复到它的不变量。

http://en.wikipedia.org/wiki/AVL_tree

关于algorithm - 一次 AVL 树插入/删除需要多少次余额检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19714840/

相关文章:

algorithm - 确定陈述中真实案例数量的最短可能方法

multithreading - 线程安全的数据结构设计

c# - 大型无向图的高效存储、查找和操作

algorithm - 如何为 Prim 算法更新堆中的元素优先级?

java - 将 AVL 树打印到 JTextPane : Java

algorithm - 易于移位的线段树

algorithm - 分离轴定理 - 包含和最小平移向量

java - 幸存者编程挑战

c - 哪种计算 nCr 的方法更好

c - 使用递归删除 AVL 树