avl树分析
吴建涛
定义:
一棵空二叉树是AVL树,如果T是非空二叉树,TL和TR分别是其左子树和右子树,
则当且仅当TL和TR都为AVL树且|HL-HR|<=1时,T是AVL树。
AVL树的高度:(固定节点数计算最大高度)
AVL树节点的平衡因子:
AVL树节点的平衡因子定义为其左子树的高度减去右子树的高度,我们可以在插入和删除操
作的时候更新平衡因子。
一棵AVL树的各节点平衡因子为1,-1, 0
树的旋转:
当树的平衡因子的绝对值大于1,则该avl树不平衡。旋转通过调整子树和根的位置来重新获
得平衡。
理论分析:
左旋以TR的节点为根,HR'=HRR。TL增加了一个新节点,并插入入TRL,
HL'=max(HL,HRL)+1。新的平衡因子G'为HL'-HR'=max(HL,HRL)-HRR+1;
HL-max(HRL,HRR)-1<-1 => HL<max(HRL,HRR),
若HRL>HRR,HL,G'=GR'+1.有可能破坏平衡
若HRR>HRL。HL<HRL,G'=GR'+1(不会破坏平衡)
针对HRL>HRR,使用特殊的旋转。