在我大学的时候,就曾经从参加面试的学长那里知道红黑树这种数据结构,但是经过我的观察,绝大部分的本科数据结构课程里都没有这部分内容。本文将介绍这种被本科教学体系遗弃,但却常常被工作面试中提到的数据结构,并且为后面的HashMap的内容做铺垫。
定义与性质
首先需要明确的是,红黑树是一棵二叉搜索树,如果不了解二叉搜索树的朋友可以先去了解一下。这里想到了本人在研究生复试的时候被问到什么是二叉搜索树,一时竟然没想起来。
下面是一棵典型的红黑树,我们可以看到这颗红黑树的确是一棵二叉搜索树。
一般来说,红黑树具有以下5个性质:
-
节点由红色和黑色组成
-
且根节点是黑色
-
所有的叶子节点都是黑色
-
根节点到叶子节点的路径上不可能出现两个连续的红色节点
-
从任一节点出发到每个叶子节点都包含相同数量的黑色节点
红黑树的查找
因为红黑树是一棵二叉搜索树,所以同样具有二叉树的性质:左子树的所有节点都小于当前节点的值,右子树的所有节点都大于当前节点的值。所以,查找节点的算法就很简单了,我们来了解一下查找的流程。