上一篇博文中,我们详细地分析了树的基本概念以及二叉查找树的实现过程,基于二叉查找树的特性,即对于树种的每个结点 T(T 可能是父结点), 它的左子树中所有项的值小 T 中的值,而它的右子树中所有项的值都大于 T 中的值。这意味着该树所有的元素可以用某种规则进行排序 (取决于 Comparable 接口的实现),以致于二叉树查找树能够胜任快速地查找过程,这个查找的过程的时间复杂度为 O(logN),但是这个时间复杂度并不是严格意义上的 O(logN),在某些情况下还是会上升到 O(N),显然这并不是一件好事情,因此本篇我们将来讨论另一种更为稳定的二叉树,它就是 AVL 树。以上是本篇将会讨论的主要内容: 普通二叉查找树的问题 平衡二叉树的定义 平衡二叉树的设计与实现 平衡二叉树的单旋转算法与实现 左左单旋转 LL 情景分析 右右单旋转 RR 情景分析 平衡二叉树的双旋转算法与实现 左右双旋转 LR 情景分析 右左双旋转 RL 情景分析 平衡二叉树插入操作的实现 平衡二叉树删除操作的实现 平衡二叉树的最少结点数和最多结点数问题