平衡二叉树(AVL树)
1.平衡二叉树:或者是一棵空的二叉排序树,或者是具有下列性质的二叉排序树: ⑴ 根结点的左子树和右子树的深度最多相差1; ⑵ 根结点的左子树和右子树也都是平衡二叉树。 2.平衡因子:结点的平衡因子是该结点的左子树的深度与右子树的深度之差。 3.结点的平衡因子=HL-HR 4.在平衡树中,结点的平衡因子可以是1,0,-1。 5.最小不平衡子树:在平衡二叉树的构造过程中,以距离插入结点最近的、且平衡因子的绝对值大于1的结点为根的子树。 基本思想: 在构造二叉排序树的过程中,每插入一个结点时,首先检查是否因插入而破坏了树的平衡性,若是,则找出最小不平衡子树,在保持二叉排序树特性的前提下,调整最小不平衡子树中各结点之间的链接关系,进行相应的旋转,使之成为新的平衡子树。 设结点A为最小不平衡子树的根结点,对该子树进行平衡调整归纳起来有以下四种情况: LL型 RR型 LR型 RL型 LL B = A - > lchild; A - > lchild = B - > rchild; B - > rchild = A; A - > bf = 0 ; B - > bf = 0 ; if ( FA == NULL ) root = B ; else if ( A == FA - > lchild ) FA - > lchild = B ; else FA - > rchild = B; RR B =