二叉排序树的结点不同插入次序,将导致不同的深度和平均查找长度,即其效率取决于二叉排序树的形态。为了获得较好的查找效率,就要构造一棵形态均匀的二叉排序树(AVL Tree)。
注:在学习平衡二叉树之前应先学习过二叉排序树/二叉搜索树/二叉查找树!!!
什么是平衡二叉树(AVL Tree)
平衡二叉树或者是一棵空的二叉排序树,或者是具有下列性质的二叉排序树:(1)根结点的左子树和右子树的深度最多相差1;(2)根结点的左子树和右子树也都是平衡二叉树。(具有二叉排序树的性质)
平衡因子(Balance Factor,简称BF)
平衡二叉树中每个节点有一个平衡因子域,每个节点的平衡因子是该节点左子树的高度减去右子树的高度。
平衡二叉树的构造过程的调整
这是比较复杂的。在构造二叉排序树的过程中,每插入一个结点时,首先检查是否因插入而破坏了树的平衡性,若是,在保持二叉排序树特性的前提下,调整各结点之间的链接关系,进行相应的旋转,使之成为新的平衡子树。分为四种调整过程:(L左