平衡二叉树、红黑树区别详解

二叉树是Java中常见存储方式,其中最常见的是平衡二叉树、红黑树,二者存储数据的方式大致相同,只是针对平衡因子的处理有明显差异。

平衡二叉树为了维持平衡关系,因此每次进行插入或者删除的时候,都需要判断平衡因子,一旦绝对值为2,就会触发旋转来维持平衡。实际项目中,因为数据量都不小,所以很容易触发这种旋转。

红黑树是针对上面的平衡二叉树问题,做了一定优化得来的。简单来说,红黑树通过引入颜色来尽可能减少旋转。但是不是说红黑树就不旋转了,红黑树的旋转条件不会像平衡二叉树一样容易触发。

我举个简单例子来比较二者区别:

首先是平衡二叉树:

当再插入10时,触发平衡二叉树的旋转,所以变成以下格式

那么相同情况下,红黑树又是怎么处理呢?红黑树如下

当再插入10时,不会触发红黑树的旋转。

这是二者最明显的区别。

综上:平衡二叉树追求平衡,所以需要大量旋转来维持平衡,因此性能会有影响。

红黑树也是平衡二叉树的一种,但是它通过颜色来减少旋转,不完全平衡,但性能更优一点。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值