数据结构
萩知叶一
这个作者很懒,什么都没留下…
展开
-
基于JDK8 HashMap源码——肝翻红黑树(1)
1、 红黑树定义 红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是RED或者是BLACK。通过对任何一条从根到叶子的简单路径上各个结点颜色的约束,红黑树确保没有一条路径会比其他路径长2倍,因此是近似于平衡的。 树中每个结点包含5个属性:color、key、left、right、parent。如果一个节点没有子节点或父节点,则该节点相应指针属性设置为NIL(NULL)。红黑树的性质有: 每个节点要么是红色,要么是黑色; 根节点是黑色的; 每个叶节点(原创 2020-09-13 20:50:01 · 142 阅读 · 0 评论 -
基于JDK8 HashMap源码分析——肝翻红黑树(2)
4、红黑树的删除 与n个结点的红黑树的插入操作一样,删除一个结点的时间复杂度为O(lgn)时间。但是与插入操作相比,删除操作要稍微复杂一些。 先看一下删除主流程的源码(忽略HashMap相关的操作): // 删除结点 final void removeTreeNode(HashMap<K,V> map, Node<K,V>[] tab, boolean movable) { .......(省略HashMap相关操作)原创 2020-09-13 21:01:20 · 126 阅读 · 0 评论