红黑树的红黑有什么意义_算法--我的红黑树学习过程

算法--我的红黑树学习过程

其他更多java基础文章:

java基础学习(目录)


学习资料:红黑树详细分析,看了都说好红黑树删除操作码图并茂红黑树红黑树从头至尾插入和删除结点的全程演示图

阅读前提

在研究集合类源码的时候,发现Map,Set里面不少用到红黑树,为了能够更顺利的学习源码。我决定把红黑树知识恶补一下。如果不了解树、二叉树、平衡二叉树定义的同学先了解一下这些前提知识。 由于能力时间有限,我就不复述学习资料里大神写的内容了。关于一些基础知识和概念请大家先读一遍学习资料里的文章。我接下来的讲解都将基于这三篇的基础之上,进行更细致的讲解,把我在学习过程中遇到的一些比较难理解的点尝试用文字或图例变得更容易理解。

我强烈建议大家的阅读顺序为:先读红黑树详细分析,看了都说好。这篇文章讲的比较全,但是删除部分对我来说,文字上有点难理解。接着阅读红黑树删除操作。这篇文章把删除讲解的比较细致。最后再阅读红黑树从头至尾插入和删除结点的全程演示图或码图并茂红黑树。前者格式不好,后者漏了一步,可以主要以后者为主。两篇文章就是来学以致用的,文章以图来全程演示此红黑树的所有插入,和删除情况。但是缺点是没有任何讲解,所以正适合检验一下前两篇的学习和理解,建议大家可以先自己推理一步,然后再看与文章中的下一步的结果图是否一致。


OK,现在就当大家已经按上面步骤阅读完了。如果此时还有疑问或不懂的地方,可以继续往下阅读,也可以在评论中询问我,我会尽力回答。由于个人只是对红黑树的删除部分觉得有难点,所以下面主要讲的是红黑树删除部分。

红黑树删除

前提知识

1. 红黑树的定义

  1. 任何一个节点非红即黑;
  2. 树的根为黑色;
  3. 叶子节点为黑色(注意:红黑树的所有叶子节点都指的是Nil节点);
  4. 任何两个父子节点不可能同时为红色;
  5. 任何节点到其所有分枝叶子的简单路径上的黑节点个数相同;

2. 节点命名约定

D表示要被删除的节点。即:取 Delete 的首字母;

P 表示父节点。即:取 Parent 的首字母;

S表示兄弟姐妹节点。即:取 Sibling的首字母;

U表示叔伯节点。即:取Uncle的首字母;

G表示祖父节点。即:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值