本文已参与「新人创作礼」活动,一起开启掘金创作之路。
红黑树的性质
红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型用途是实现关联数组。它在1972年由鲁道夫·贝尔发明,被称为"对称二叉B树",它现代的名字源于Leo J. Guibas和罗伯特·塞奇威克于1978年写的一篇论文。红黑树的结构复杂,但它的操作有着良好的最坏情况运行时间,并且在实践中高效:它可以在{\displaystyle {\text{O}}(\log n)}时间内完成查找、插入和删除,这里的{\displaystyle n}是树中元素的数目。
- 黑红树肯定是一个二叉排序树,但不一定是平衡二叉树
- 性质口诀:左根右,根叶黑,不红红,黑路同
- 满足二叉排序树,则左结点 < 根节点 < 右结点(左根右)
- 每个结点是红色或者黑色
- 根结点一定是黑色
- 叶子结点(一般是虚构的外部结点、NULL结点)一定是黑色
- 不存在两个相邻的红结点(一个红结点的父结点和子结点一定是黑色)
- 对每个结点,从该结点到任一叶子结点的简单路径上,所含黑结点的数量相同
- 结论
- 从根到叶结点的最长路径不大于(≤)最短路径的2倍
- 有n个内部结点的红黑树的高度 h ≤ 2log
2(n+1)
这里看不懂问题不大,对照着例子来理解即可
红黑树的插入
- 规则
举例说明(完整版)
这里只插入了5个元素,但是后续的插入操作与当前的差不多。
需要知道的是红黑树是基于平衡二叉树的插入操作的,所以想要学好红黑树的插入的前提是理解平衡二叉树的插入