昨天我们把HashMap的基本理论和1.7底层做了着重的分析讲解,今天我们接着上篇文章最后提到过的红黑树继续往下讲。
红黑树
二叉查找树简介
说到红黑树我们就要先讲解一下二叉查找树,方便不了解二叉树的同学了解一下,知道的同学也可以复习一下这部分的知识点。
二叉查找树:二分查找算法映射出来的结构
引入图片如下:
这里说一下二叉查找树的特点:
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)左、右子树也分别为二叉查找树;
左旋和右旋(平衡二叉查找树)
在每一次树插入新元素后,树的平衡都可能被破坏,需要旋转调整树的高度,以达到平衡树结构,共分为以下四种情况:
1.LL:对该结点的左儿子的左子树进行了一次插入,需右旋转
2.LR:对该结点的左儿子的右子树进行了一次插入,先左后右
3.RL:对该结点的右儿子的左子树进行了一次插入,先右后左
4.RR:对该结点的右儿子的右子树进行了一次插入,需左旋转
引入图片如下:
红黑树简介
刚刚看完二叉查找树的同学们应该对这种二叉树有了一定的理解,接着我们继续往下讲解红黑树。
引入图如下:
红黑树的性质:
1.节点是红色或黑色。
2.根节点是黑色。
3.每个叶子节点都是黑色的空节点(NIL节点)。
4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点,如果出现了连续两个红色节点就进行相应的旋转变色)
5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。(这一点是平衡的关键)
这些约束强制了红黑树的关键性质: 从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。
结果是这个树大致上是平衡的。因为操作比如插入、删除和查找某个值的最坏情况时间都要求与
树的高度成比例,这个在高度上的理论上限允许红黑树在最坏情况下都是高效的,而不同于普通的
二叉查找树。
讲到这里相信同学们也对二叉查找树,红黑树都有了一定的理解,下一章节我会带大家深刻了解HashMap1.8底层是如何进行树化,如果有同学想了解hashMap数组+链表结构和1.7的相关知识,可以看我上一篇的博客,谢谢大家的观看,希望能给各位同学带来帮助。如果觉得博主写的还可以的,可以点赞关注。