AVL树和红黑树


AVL树可以是空树或者具有下列性质的二叉搜索树:

  • 左右子树都是AVL树,且左子树和右子树的高度之差的绝对值不超过1。

AVL树的插入

新结点p的平衡因子为0,它的父结点为pr,修改后pr的平衡因子值有三种情况:

  1. 结点pr的平衡因子为0,不需要进行平衡化处理
  2. 结点pr的平衡因子的绝对值|bf|=1,需要从结点pr向根的方向回溯,进行平衡化处理
  3. 结点pr的平衡因子绝对值|bf|=2:
    (1). 若结点pr的bf=2,说明右子树高,结合其右子女q的bf:
    a. 若q的bf=1,执行左单旋转
    b.若q的bf为-1,执行先右后左双旋转
    (2).若结点pr的bf=-2,说明左子树高,结合其左子女q的bf:
    a.若q的bf为-1,执行右单旋转
    b.若q的bf为1,执行先左后右双旋转

红黑树(特殊的二叉搜索树)

可以把一棵红黑树视为一棵扩充二叉树,用外部结点表示空指针。
特性:

  1. 根结点和所有外部结点的颜色是黑色。
  2. 从根结点到外部结点的途中没有连续两个结点的颜色是红色。
  3. 所有从根到外部结点的路径上都有相同数目的黑色结点。

结点x的黑高度:从任一结点x出发(不包括结点x),到达一个外部结点的任一路径上的黑结点个数。

假设根结点的黑高度bh(root)=r,则由特性可知每个红色指针后面都会跟随一个黑色指针,从而每条从根到外部结点的路径上都有r~2r个指针。
结论:设h是红黑树的高度(不包括外部结点),n是树中内部结点的个数,r是根结点的黑高度:

  • h<=2r
  • n>=2^r-1
  • h<=2log2^(n+1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值