1.平衡二叉树(Balanced Binary Tree)
(1)定义
也称“AVL树”,二叉排序树上任一结点的左子树和右子树的高度之差不超过1
(2)结点的平衡因子
平衡因子 = 左子树高度 - 右子树高度 (注:平衡二叉树结点的平衡因子的值只可能是-1、0或1)
3.平衡二叉树的插入
(1)根据二叉排序树的插入规则插入新结点
(2)从插入的结点沿路径回找到第一个不平衡的结点,若找不到则完成插入操作,否则继续步骤(3)
(3)调整以该结点为根的子树(最小不平衡二叉树)
4.平衡二叉树的删除
(1)按照二叉排序树的删除规则删除结点
(2)从删除的结点沿路径回找,找到第一个不平衡的结点,若找不到则完成删除操作,否则继续步骤(3)
(3)找到该不平衡结点的高度最高的孩子结点和子孙结点
(4)根据该子孙结点的位置,调整最小不平衡二叉树
(5)如果不平衡性向上传导,则继续步骤(2)
5.调整最小不平衡二叉树
(1)LL:在A的左孩子的左子树中插入新结点导致不平衡
(2)RR:在A的右孩子的右子树中插入新结点导致不平衡
(3)LR:在A的左孩子的右子树中插入新结点导致不平衡
(4)RL:在A的右孩子的左子树中插入新结点导致不平衡
6.平衡二叉树的查找效率
设平衡二叉树的结点数为n
性能 | 性能指标 |
---|---|
最坏时间复杂度 | O ( l o g 2 n ) O(log_{2^n}) O(log2n) |
最好时间复杂度 | O ( 1 ) O(1) O(1) |
平均时间复杂度 | O ( l o g 2 n ) O(log_{2^n}) O(log2n) |
空间复杂度 | O(n) |