美文网首页
红黑树的前世今生

红黑树的前世今生

作者: Aaron_Swartz | 来源:发表于2022-06-27 22:51 被阅读0次

红黑树本质还是解决排序问题,并且它在插入和删除节点方面有效率优势。
线性结构搜索时间复杂度: O(n)
有序的线性结构搜索的时间复杂度是O(logn) 但是插入、删除的时候需要移动大量元素,比较费时。

  • BST(binary search tree)二叉排序树: 查找时间复杂度为O(logn), 删除或添加不需要移动大量元素
    1)左子树不空,则左子树结点小于根节点
    2)右子树不空,右子树结点大于根节点
    3)左右子树也分别为二叉排序树

  • AVL(平衡二叉树): 是在BST的基础上引入平衡性,即从根节点开始,建树的时候必须满足左右子树的高度差小于1. 这样AVL的查找时间复杂度一定是树的高度也就是O(logn), 而不会因为异常情况而退化为O(n)

  • RBT(Red-Black Tree) 红黑树: 主要是为克服AVL树在插入元素的时候,当左右子树的高度差被破坏的时候就需要不停的左旋右旋,非常耗费时间,因此引入红黑树(又叫self-balanced search tree)。

  • RBT和AVL的特点对比:

    对比.png
    当需要插入和删除节点的时候,RBT相较于AVL只需要更少的旋转。但是RBT在平衡性上并没有那么平衡,因此当处于搜索多而插入删除少的时候,适合用AVL;而当搜索没那么多插入删除多的时候适合用RBT。
  • 红黑树定义

  1. 每一个结点要么是红色,要么是黑色。
  2. 根结点是黑色的。
  3. 所有叶子结点都是黑色的(实际上都是Null指针,下图用NIL表示)。叶子结点不包含任何关键字信息,所有查询关键字都在非终结点上。
  4. 每个红色结点的两个子节点必须是黑色的。换句话说:从每个叶子到根的所有路径上不能有两个连续的红色结点
  5. 从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点


    image.png
  • 相关定理
    1)从根到叶子的最长的可能路径不对于最短的可能路径的两倍长。
    2)红黑树的树高(h) 不大于两倍的红黑树的黑深度(bd), 即 h<=2bd;
  1. 一颗拥有n个内部结点(不包括叶子结点)的红黑树的数高最多为2O(log(n+1)), 近似也为log(n)

参考:
1 红黑树相关定理证明
2 2021年最好懂的红黑树

相关文章

  • 红黑树的前世今生

    红黑树本质还是解决排序问题,并且它在插入和删除节点方面有效率优势。线性结构搜索时间复杂度: O(n)有序的线性结构...

  • 数据结构—树—红黑树

    红黑树概述 红黑树的插入 红黑树的删除

  • “业因果报”金句

    今生做官为何因,前世佛前树金身;b今生美貌为何因,前世佛前献花人;c今生驮背为何因,皆因前世欺骗人;d有吃有穿为何...

  • TreeMap

    需要先了解红黑树,这是之前分析红黑树的文章。之前在分析红黑树时,我认为红黑树=二叉查找树+红黑平衡,关于二叉查找树...

  • 拿下红黑树

    红黑树 红黑树、2-3树的简单定义: 实现红黑树的基本结构以及添加操作(维护定义,左旋、右旋、颜色反转) 红黑树与...

  • 数据结构与算法-AVL 红黑树

    AVL树AVL树 算法红黑树红黑树 B站

  • [转载]红黑树

    https://zhuanlan.zhihu.com/p/24367771红黑树简介红黑树插入红黑树删除

  • 彻底理解红黑树(二)之 插入

    彻底理解红黑树(一)之 二叉搜索树彻底理解红黑树(二)之 插入彻底理解红黑树(三)之 删除 前言 红黑树的插入情况...

  • 彻底理解红黑树(三)之 删除

    彻底理解红黑树(一)之 二叉搜索树彻底理解红黑树(二)之 插入彻底理解红黑树(三)之 删除 前言 红黑树的删除情况...

  • 红黑树

    啥是红黑树,红黑树 = 二叉树

网友评论

      本文标题:红黑树的前世今生

      本文链接:https://www.haomeiwen.com/subject/iclfmctx.html