解析AVL树与红黑树(RBTree)

解析AVL树与红黑树(RBTree)

AL树
来讲讲AVL树:它是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。
  节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1、0或 -1的节点被认为是平衡的。带有平衡因子 -2或2的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以直接存储在每个节点中,或从可能存储在节点中的子树高度计算出来.

AVL树的插入操作
①LL型:在左子树的左孩子上插入元素;(右旋)
②RR型:在右子树的右孩子上插入元素;(左旋)
③LR型:在左子树的右孩子上插入元素;(先左旋再右旋)
④RL型:在右子树的左孩子上插入元素;(先右旋再左旋)

这里以LR型为例

红黑树
5个原则:
①每个节点或是红的,或是黑的。
②根节点为黑的
③每个叶节点是黑的。
④如果一个节点是红的,则它的两个儿子都是黑的
⑤对每个节点,从该节点到其子孙节点的所有路径包含相同书目的黑节点

红黑树的旋转操作与普通平衡二叉搜索树一致。由于前面5条条件限制,插入,删除节点时都得遵循这些条件。

红黑树插入操作
  插入之后,新节点颜色为红,如果违背以上条件则进行调整,调整过程为迭代。

AVL树和红黑树的比较

①AVL树适合用于插入与删除次数比较少,但查找多的情况,并且应用场景中对插入删除不频繁,只是对查找要求较高,那么AVL还是较优于红黑树。红黑树的查询性能略微逊色于AVL树,因为他比AVL树会稍微不平衡最多一层,也就是说红黑树的查询性能只比相同内容的AVL树最多多一次比较,但是,红黑树在插入和删除上完爆AVL树,AVL树每次插入删除会进行大量的平衡度计算,而红黑树为了维持红黑性质所做的红黑变换和旋转的开销,相较于AVL树为了维持平衡的开销要小得多

②相对于要求严格的AVL树来说,它的旋转次数少,插入最多两次旋转,删除最多三次旋转,所以对于搜索、插入、删除操作比较多的情况下,我们就用红黑树。

③红黑树与AVL树都是平衡树,但是AVL是完全平衡的(平衡就是值树中任意节点的左子树和右子树高度差不超过1);

④红黑树效率更高,因为AVL为了保证其完全平衡,插入和删除的时候在最坏的情况下要旋转logN次,而红黑树插入和删除的旋转次数要比AVL少。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值