关于AVL树的总结
定义
AVL树
一棵空的二叉树是AVL树
一棵非空的二叉树是AVL树,必须满足:
(1)左右子树也是AVL树
(2)左右子树高度之差的绝对值小于等于1
AVL搜索树
既是AVL树也是二叉搜索树
索引AVL搜索树
既是AVL树也是索引二叉搜索树
性质
任意n个元素都能构成一棵高度为O(logn)的AVL树
AVL搜索树的搜索、插入、删除的时间复杂性都为O(logn)
平衡因子:左子树的高度 - 右子树的高度(每个节点的平衡因子值为-1、0、1)
AVL搜索树插入后不平衡
节点A:插入后离新插入的节点最近的祖先并且平衡因子为-2或2
节点A的不平衡情况有两类四种:
- L型不平衡:插入操作发生在A的左子树中
- LL型:节点插在A的左子树的左子树中
- LR型:节点插在A的左子树的右子树中
- R型不平衡:插入操作发生在A的右子树中
- RR型:节点插在A的右子树的右子树中
- RL型:节点插在A的右子树的左子树中
AVL搜索树删除后不平衡
节点A:从被删除节点的父节点到根节点的路径中,第一个平衡因子为2或-2的节点
节点A的不平衡情况有两类六种:
- L型不平衡:删除操作发生在A的左子树中
- L0型:A的右孩子节点的平衡因子为0
- L1型:A的右孩子节点的平衡因子为1
- L-1型:A的右孩子节点的平衡因子为-1
- R型不平衡:删除操作发生在A的右子树中
- R0型:A的左孩子节点的平衡因子为0
- R1型:A的左孩子节点的平衡因子为1
- R-1型:A的左孩子节点的平衡因子为-1