字节三面:小伙子你先跟我说一说红黑树吧,java程序设计教程雍俊海第三版答案

本文详细介绍了红黑树的性质、转换规则以及添加、删除节点的操作。从234树出发,讨论了如何保持红黑树的平衡,包括变色、左旋、右旋等调整策略。此外,还阐述了在删除节点时如何选择前驱或后继节点作为替代,并确保红黑树性质不变。
摘要由CSDN通过智能技术生成

来看234树的添加操作

添加如果出现需要分裂的情况,分裂出的元素首先进行和父级合并,如果父级已经是4节点那么将父级分裂,递归操作

234树的生长全部都是从叶子节点进行生长的,从叶子节点进行分裂向上延伸

红黑树

=======

性质

  1. 每个节点要么红色,要么黑色

  2. 根节点是黑色

  3. 每个子节点 (NIL) 是黑色

  4. 每个红色节点的两个子节点一定是黑色

  5. 任意一节点到每个叶子节点的路径都包含数量相同的黑节点

解释一下性质

性质4和性质5说一下

如果一个红色节点那么它的两个子节点必须为黑色,包括nil节点,也就是说不能有两个红色节点相连

任意一个叶子节点或没有子节点的节点到根节点经过的黑色节点数量都一致,不懂下面再解释

叶子节点 : 标记为NIL,为虚拟节点,颜色必须为黑色,234中叶子节点为没有子节点的节点,而红黑树的叶子节点是虚拟的节点

3节点的两种形态如果红色在左边就叫做左倾,红色在右边就叫做右倾

将234树进行转换为红黑树操作

右倾

左倾

现在来看一下几个没有子节点的节点下面其实都有两个NIL节点我们可以任意从一个nil节点出发,到6根节点,所经过的黑色节点个数是一样的,一般情况下NIL节点是不画出来的,但是不代表不存在

红黑树操作

=========

变色:节点的颜色由黑变红或者由红变黑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值