”拿捏“红黑树

2,489 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

红黑树的性质

红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型用途是实现关联数组。它在1972年由鲁道夫·贝尔发明,被称为"对称二叉B树",它现代的名字源于Leo J. Guibas和罗伯特·塞奇威克于1978年写的一篇论文。红黑树的结构复杂,但它的操作有着良好的最坏情况运行时间,并且在实践中高效:它可以在{\displaystyle {\text{O}}(\log n)}时间内完成查找、插入和删除,这里的{\displaystyle n}是树中元素的数目。

  1. 黑红树肯定是一个二叉排序树,但不一定是平衡二叉树
  2. 性质口诀:左根右,根叶黑,不红红,黑路同
    • 满足二叉排序树,则左结点 < 根节点 < 右结点(左根右)
    • 每个结点是红色或者黑色
      • 根结点一定是黑色
      • 叶子结点(一般是虚构的外部结点、NULL结点)一定是黑色
    • 不存在两个相邻的红结点(一个红结点的父结点和子结点一定是黑色)
    • 对每个结点,从该结点到任一叶子结点的简单路径上,所含黑结点的数量相同
  3. 结论
    • 从根到叶结点的最长路径不大于(≤)最短路径的2倍
    • 有n个内部结点的红黑树的高度 h ≤ 2log2(n+1)

这里看不懂问题不大,对照着例子来理解即可

红黑树的插入

  1. 规则 在这里插入图片描述

举例说明(完整版

这里只插入了5个元素,但是后续的插入操作与当前的差不多。

需要知道的是红黑树是基于平衡二叉树的插入操作的,所以想要学好红黑树的插入的前提是理解平衡二叉树的插入

在这里插入图片描述