1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-20 22:17:09 +08:00

增加使用红黑树的原因

This commit is contained in:
Snailclimb 2018-08-16 21:54:54 +08:00 committed by GitHub
parent 461930ab54
commit 5f60b33822
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -78,17 +78,21 @@
* **6 红黑树** * **6 红黑树**
- 红黑树特点: - 红黑树特点:
1. 每个节点非红即黑; 1. 每个节点非红即黑;
2. 根节点总是黑色的; 2. 根节点总是黑色的;
3. 每个叶子节点都是黑色的空节点NIL节点 3. 每个叶子节点都是黑色的空节点NIL节点
4. 如果节点是红色的,则它的子节点必须是黑色的(反之不一定); 4. 如果节点是红色的,则它的子节点必须是黑色的(反之不一定);
5. 从根节点到叶节点或空子节点的每条路径,必须包含相同数目的黑色节点(即相同的黑色高度) 5. 从根节点到叶节点或空子节点的每条路径,必须包含相同数目的黑色节点(即相同的黑色高度)
- 红黑树的应用: - 红黑树的应用:
TreeMap、TreeSet以及JDK1.8之后的HashMap底层都用到了红黑树。 TreeMap、TreeSet以及JDK1.8之后的HashMap底层都用到了红黑树。
- 为什么要用红黑树
- 推荐文章 简单来说红黑树就是为了解决二叉查找树的缺陷,因为二叉查找树在某些情况下会退化成一个线性结构。详细了解可以查看 [漫画:什么是红黑树?](https://juejin.im/post/5a27c6946fb9a04509096248#comment)(也介绍到了二叉查找树,非常推荐)
- 推荐文章:
- [漫画:什么是红黑树?](https://juejin.im/post/5a27c6946fb9a04509096248#comment)(也介绍到了二叉查找树,非常推荐) - [漫画:什么是红黑树?](https://juejin.im/post/5a27c6946fb9a04509096248#comment)(也介绍到了二叉查找树,非常推荐)
- [寻找红黑树的操作手册](http://dandanlove.com/2018/03/18/red-black-tree/)(文章排版以及思路真的不错) - [寻找红黑树的操作手册](http://dandanlove.com/2018/03/18/red-black-tree/)(文章排版以及思路真的不错)
- [红黑树深入剖析及Java实现](https://zhuanlan.zhihu.com/p/24367771)(美团点评技术团队) - [红黑树深入剖析及Java实现](https://zhuanlan.zhihu.com/p/24367771)(美团点评技术团队)
@ -96,7 +100,7 @@
[二叉树学习笔记之B树、B+树、B*树 ](https://yq.aliyun.com/articles/38345) [二叉树学习笔记之B树、B+树、B*树 ](https://yq.aliyun.com/articles/38345)
[《B-树B+树B*树详解》](https://blog.csdn.net/aqzwss/article/details/53074186) [《B-树B+树B*树详解》](https://blog.csdn.net/aqzwss/article/details/53074186)
[《B-树B+树与B*树的优缺点比较》](https://blog.csdn.net/bigtree_3721/article/details/73632405) [《B-树B+树与B*树的优缺点比较》](https://blog.csdn.net/bigtree_3721/article/details/73632405)