HashMap重要思维导图
Posted 耳冉鹅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap重要思维导图相关的知识,希望对你有一定的参考价值。
HashMap为什么使用红黑树而不是其他的数据结构
回顾一下二叉树的基本内容:
- 二叉排序树(查找树)
若左子树不为空,则左子树上所有结点的值均小于根结点的值。
若右子树不为空,则右子树上所有结点的值均大于根节点的值。
左右子树也为二叉排序树 - 平衡二叉树(AVL树)
是一种二叉查找树,当且仅当两个子树的高度差不超过1时,这个树是平衡二叉树 - 红黑树
是许多二叉查找树中的一种,它能保证在最坏的情况下,基本动态集合操作时间为O(lgn)
为什么不使用二叉排序树
在添加元素的时候极端情况下会出现线性结构
eg:由于二叉排序树左子树所有节点的值均小于根节点的特点,如果我们添加的元素都比根节点小,会导致左子树线性增长,这样就失去了用树型结构替换链表的初衷,导致查询时间增长。
为什么不使用平衡二叉树
AVL是严格平衡树,因此在增加or删除节点的时候,根据不同情况,旋转的次数比红黑树要多。
红黑树只要求部分达到平衡,但提出了为节点增加颜色,红黑树是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决。
-
插入节点导致树失衡
AVL和RB-Tree都是最多两次树旋转实现复衡rebalance,旋转的量级是O(1) -
删除节点导致树失衡
AVL需要维护从被删除节点到根节点root这条路径上所有节点的平衡,旋转的量级为O(logN)
RB-Tree最多只需要旋转三次实现复衡,是O(1),删除效率更高,开销更小。
引入RB-Tree是功能、性能、空间开销的折中结果。
红黑树介绍
- 每个节点都有红色or黑色树的根始终是黑色的
- 没有两个相邻的红色节点
- 从节点(包括根)到其任何后代的NULL节点(叶子结点下发挂的两个空节点,并且认为他们是黑色的)的每条路径都具有相同数量的黑色节点
以上是关于HashMap重要思维导图的主要内容,如果未能解决你的问题,请参考以下文章