红黑树理解(一) 从2-3树到红黑树
Posted zhangjin1120
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红黑树理解(一) 从2-3树到红黑树相关的知识,希望对你有一定的参考价值。
红黑树理解 (一) 从2-3树到红黑树
红黑树理解(二)插入过程图解
红黑树理解(三)变色
二叉搜索树(Binary Search Tree)
二叉搜索树,也叫二叉排序树,简称BST。如果连续升序插入,或者连续降序插入,二叉搜索树就类似于一个链表了,这时的查询也从O(
l
o
g
2
n
log_2n
log2n)退化到了O(n)。例如:
如何解决二叉搜索树存在的不平衡问题?
在插入数据时,进行旋转。
也就是平衡二叉搜索树,常见的平衡二叉搜索树有AVL树、红黑树。对于AVL和红黑树孰优孰劣,有人认为差不多,有人认为红黑树综合性能比AVL要好,参考:avl 树和 rbtree 差不多。谁好谁不好不重要。本文主要分析红黑树,为将来的HashMap源码分析做铺垫。
红黑树中红色结点有什么特殊含义吗?
红黑树中的红色结点,来源于2-3树。2-3树并不是二叉查找树,而是多路查找树。2-3树中,一个3-Node结点可以拆分成2个2-Node结点,这两个2-Node结点,用一条红色的边连接起来。
但是BST是没有边的定义的,所以这个颜色只能记录在节点的数据结构中,所以我们把从父节点到子节点的红边会存储在子节点中——将子节点涂成红色,构成红色节点。其他的自然都是黑色节点。 关于2-3树和红黑树的更具体的分析,参考:换个角度彻底理解红黑树。
红黑树举例
在https://rbtree.phpisfuture.com/上,可以直接构建一刻红黑树。以文章开头那个倾斜的二叉搜索树为例,看看连续插入8,7,6,5,4,3会得到怎样的红黑树。
可以看到,从根节点到叶子结点,所有路径都只有2个黑色结点(不算叶子结点)。
以上是关于红黑树理解(一) 从2-3树到红黑树的主要内容,如果未能解决你的问题,请参考以下文章