参考: https://www.cnblogs.com/skywang12345/p/3577479.html
高度平衡的二叉树,树中任何节点的两个子树的高度最大差值为1.
public class AVLTree<T extends Comparable<T>> {
private AVLTreeNode<T> mRoot; // 根结点
// AVL树的节点(内部类)
class AVLTreeNode<T extends Comparable<T>> {
T key; // 关键字(键值)
int height; // 高度
AVLTreeNode<T> left; // 左孩子
AVLTreeNode<T> right; // 右孩子
public AVLTreeNode(T key, AVLTreeNode<T> left, AVLTreeNode<T> right) {
this.key = key;
this.left = left;
this.right = right;
this.height = 0;
}
}
......
}
旋转:
失去平衡的情况: LL LR RL RR
LL的旋转:
RR的旋转:
LR的旋转:
RL的旋转: