AVL树

参考: 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

AVL树

AVL树

LL的旋转:

AVL树

RR的旋转:

AVL树

LR的旋转:

AVL树

RL的旋转:

AVL树

 

 

 

 

上一篇:树-AVL最优二叉树


下一篇:再回首数据结构—AVL树(二)