平衡二叉树是一种常用的数据结构,用于在增删元素时维护树的平衡性,从而使树的查找、插入和删除操作的时间复杂度为O(log n)。平衡二叉树性质包括树高、节点数、平衡因子和旋转操作,本文将从多个角度分析这些性质。
树高
平衡二叉树的树高是指从根节点到叶子节点的最长路径的层数。由于平衡二叉树的平衡性,其树高不会超过O(log n),或者说其高度为O(log n)级别。这是因为平衡二叉树在插入或删除元素时会进行自平衡操作,使得树的高度保持在O(log n)的级别。
节点数
平衡二叉树的节点数和树的高度之间具有关系。具体来说,其节点数N满足下列不等式:
N(h) = N(h-1) + N(h-2) + 1 (h≥3)
其中,h为树的高度。该不等式表示每个节点所对应的子树都有一个比它小2或小1的子树,而根节点没有子树。由此,我们可以得到平衡二叉树节点数的下界和上界:
2^(h/2) - 1 ≤ N ≤ 2^h - 1 (h≥1)
平衡因子
平衡二叉树的平衡因子是指左右子树高度之差的绝对值。对于任意一个节点,其平衡因子的范围应该在[-1, 0, 1]之间。如果平衡因子的绝对值大于1,则表示该节点的子树不平衡,需要进行旋转操作。通过平衡因子,我们可以判断一个节点是否处于平衡状态,从而保证平衡二叉树的高度不会超过O(log n)的级别。
旋转操作
平衡二叉树在插入或删除节点时可能会出现不平衡的情况,需要进行旋转操作来保持树的平衡性。平衡二叉树包括LL、RR、LR和RL四种旋转方式。其中,LL旋转和RR旋转是同一类型的旋转,称为单旋转;而LR旋转和RL旋转则把两次旋转合并成一次,称为双旋转。
LL旋转
如果一个节点的左子树比右子树高度大2层或者等于2层,而且该节点的左子树的左子树比左子树的右子树高度大,那么就需要对该节点进行LL旋转。
RR旋转
如果一个节点的右子树比左子树高度大2层或者等于2层,而且该节点的右子树的右子树比右子树的左子树高度大,那么就需要对该节点进行RR旋转。
LR旋转
如果一个节点的左子树比右子树高度大2层或者等于2层,而且该节点的左子树的右子树比左子树的左子树高度大,那么就需要对该节点进行LR旋转。
RL旋转
如果一个节点的右子树比左子树高度大2层或者等于2层,而且该节点的右子树的左子树比右子树的右子树高度大,那么就需要对该节点进行RL旋转。
微信扫一扫,领取最新备考资料