【面经笔记】红黑树的特性与其在C++ STL中的应用

AVL树和红黑树适合内部存储应用,B树适合外部存储应用

AVL树和红黑树都是用旋转保持平衡,AVL树对每个插入操作最多需要两次次旋转(单/双旋),对每个删除操作最多需要O(logn)次旋转;而红黑树对每个插入和删除操作,任何不平衡都会在三次旋转之内解决。

查找、插入、删除的时间均为log(n),红黑树的算法时间复杂度和AVL相同,但红黑树的统计性能要好于平衡二叉树,但极端性能略差。


平衡二叉树/AVL树:

定义:

左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1
树的深度即log(n)。查找、插入、删除的时间均为log(n)

将二叉树节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度

距离插入结点最近的,且平衡因子的绝对值大于1的结点为根的子树,称为最小不平衡子树。


插入新节点,平衡操作:

最小不平衡子树的BF与它的子树的BF符号相同时:

  • 最小不平衡子树根结点的平衡因子大于1时,右旋
  • 最小不平衡子树根结点的平衡因子小于-1时,左旋

最小不平衡子树的BF与它的子树的BF符号相反时:

  • 先对子树结点进行一次旋转是的符号相同,
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值