Java源码集合类TreeMap学习1——数据结构5红黑树
来源:互联网 发布:centos快照 编辑:程序博客网 时间:2024/05/17 01:36
红黑树本质上一棵平衡二叉树。
参考:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/03.01.md
为什么有了平衡二叉树还会出现红黑树呢?
排序二叉树虽然可以快速检索,但在最坏的情况下:如果插入的节点集本身就是有序的,要么是由小到大排列,要么是由大到小排列,那么最后得到的排序二叉树将变成链表:所有节点只有左节点(如果插入节点集本身是大到小排列);或所有节点只有右节点(如果插入节点集本身是小到大排列)。在这种情况下,排序二叉树就变成了普通链表,其检索效率就会很差。当插入节点本身就是由小到大排列时,排序二叉树将变成一个链表,这种排序二叉树的检索性能最低:N 个节点的二叉树深度就是 N-1。
红黑树的高度不会无限增高,这样保证红黑树在最坏情况下都是高效的,不会出现普通排序二叉树的情况。由于红黑树只是一个特殊的排序二叉树,因此对红黑树上的只读操作与普通排序二叉树上的只读操作完全相同,只是红黑树保持了大致平衡,因此检索性能比排序二叉树要好很多。
通过分析 JDK 源代码研究 TreeMap 红黑树算法实现:https://www.ibm.com/developerworks/cn/java/j-lo-tree/index.html?ca=drs-
红黑树的java代码实现:http://www.jianshu.com/p/30ab2a7fa5a3
红黑树从头至尾插入和删除结点的全程演示图:http://blog.csdn.net/v_JULY_v/article/details/6284050
- Java源码集合类TreeMap学习1——数据结构5红黑树
- Java源码集合类TreeMap学习1——数据结构1
- Java源码集合类TreeMap学习1——数据结构2
- Java源码集合类TreeMap学习1——数据结构3二叉树创建代码
- Java源码集合类TreeMap学习1——数据结构4平衡二叉树的旋转
- Java源码集合类TreeMap学习1——数据结构4平衡二叉树创建代码
- Java源码集合类TreeMap学习1——数据结构4平衡二叉树插入一个元素的递归算法
- Java源码集合类TreeMap学习2
- Java集合——TreeMap源码详解
- 集合源码学习(六):TreeMap
- 集合学习--TreeMap 源码初探
- Java集合源码学习(22)_NavigableMap接口的实现TreeMap
- 深入java集合源码学习系列:TreeMap的实现原理
- 【Java集合源码剖析】TreeMap源码剖析
- 【Java集合源码剖析】TreeMap源码剖析
- 【Java集合源码剖析】TreeMap源码剖析
- 【Java集合源码剖析】TreeMap源码剖析
- 【Java集合源码剖析】TreeMap源码剖析
- SSH框架(Spring+SpringMVC+Hibernate5) pom.xml文件
- Java线程通信-Exchanger
- Poj- 1384-Piggy-Bank (完全背包
- 什么样的网站才能让搜索喜欢
- 水下无线传感器网络节点定位算法
- Java源码集合类TreeMap学习1——数据结构5红黑树
- 网页常用色(链接)
- 有监督分类:基于最小二乘法的分类
- Intellij IDEA 2017集成MyBatis三剑客
- git参考
- 全民创业时代如何选择跟对人,如何做对事
- [HAOI2017]供给侧改革
- request.getParameterValues与request.getParameter的区别
- R语言使用随机森林方法对数据分类