目录
- 平衡二叉树得定义
- 插入操作
- 平衡二叉树的平衡调整方法
- 查找效率分析
平衡二叉树得定义
平衡二叉树(Balanced Binary Tree),简称平衡树(AVL树),平衡二叉树或者空树,或者是具有以下特征得二叉树排序是:
- 左子树与右子树得深度之差得绝对值不超过1;
- 左子树和右子树也是平衡二叉树。
平衡因子(BF) = 左子树高度-右子树的高度
平衡因子的值只可能是 -1,0或1。
最小不平衡子树:插入结点最近且平衡因子绝对值超过1的祖先结点
//平衡二叉树结点
typedef struct AVLNode{
int key; //数据域
int balance; //平衡因子
struct AVLNode *lchild;
struct AVLNode *rchild;
}AVLNode,* AVLTree;
插入操作
插入新的结点
查找路径上所有结点都有可能受到影响
从插入点往回找到第一个不平衡结点,调整以该结点为根的子树(最小不平衡子树)
平衡二叉树的平衡调整方法
LL 在A的左孩子的左子树中插入导致不平衡
RR 在A的右孩子的右子树中插入导致不平衡
LR 在A的左孩子的右子树中插入导致不平衡
RL 在A的右孩子的左子树中插入导致不平衡