红黑树的一点理解

今天在看红黑树的内容。在这里简单记一下对其简单的理解。

红黑树可以看作通过设定颜色以及规则使得红黑树处于一种软平衡的状态。通过这种软平衡使得子树高度差不会过大。但又不需要和平衡树一样时刻满足高度差为1的状态。

(可以直接看后面加粗部分)以此图为例(H和M下面应该是有两个黑色的空节点) 如果想插入节点N。首先根据性质(从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点)发现,插入红色节点对树的影响最小。如果插入黑色节点则会破坏这一性质(PS,当然也可以插入黑色,只不过普遍来说插入黑色的话如果让树重新恢复平衡的话可能需要进行更多的操作)。如果插入红色到M右子树,这样会破坏性质(每个红色结点的两个子结点都是黑色)。这里就需要将M,H进行变色,但是这样又会破坏性质(从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点)。接着可以发现这里通过这种变色的操作无法满足红黑树的性质。因此最后需要对该树进行旋转以维持平衡。如果插入的节点是A,则可以直接插入D的左子树,不需要进行旋转。然而如果是平衡树的话由于子树的高度差大于1,则必须进行旋转以达到严格的平衡。因此红黑树可以理解为通过五条规则减少旋转操作,从而让二叉树满足一种软平衡状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值