• 4. 红黑二叉树


    一、红黑树是一种平衡二叉树

    定义:红黑树是一种特殊的二叉查找树,在其结点结构中增加一个存储位表示结点的颜色

    重要性质:通过遵循对结点着色的某种规则,对于所有从根结点到叶子结点的路径,红黑树确保没有一条路径会比其他路径长出两倍

     

    二、红黑树的平衡条件

    1. 每个结点的颜色要么是红色,要么是黑色
    2. 根结点是黑色的
    3. 所有的叶结点都是空结点,并且是黑色的
    4. 如果一个结点是红色的,那么它的孩子结点是黑色的
    5. 从一个结点到其子孙结点的每条路径都包含相同数目的黑色结点

    相对于平衡二叉树的平衡条件,该平衡条件较为宽松。虽然这可能导致红黑树的高度较高(仍是logn级别),但相较于平衡二叉树的插入/删除操作带来的频繁旋转,红黑树的插入操作最多进行两次旋转、删除操作最多进行三次旋转。由此可得,插入/删除的效率更好,但查找的效率较低(时间效率仍是O(logn))。

    对于红黑树而言,插入、删除、查找的时间复杂度都是O(logn)

     

    三、红黑树的应用

    红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(logn),效率非常高。

    1. C++ STL中的set和map是用红黑树实现的
    2. I/O多路复用的epoll采用红黑树组织管理sockfd,以支持快速的增删改查
    3. Nginx中用红黑树管理定时器,因为红黑树是有序的,可以很快得到距离最小的定时器
    4. Java集合中的TreeSet和TreeMap是用红黑树实现地
    5. Linux虚拟内存的管理,进程的虚拟内存区域都存储在一棵红黑树上,每个虚拟地址区域都对应红黑树的一个结点,该结点的左指针指向相邻的低地址虚拟存储区域,右指针指向相邻的高地址虚拟地址空间

    四、插入和删除操作

    参考博文:一定让你真正彻底明白红黑树红黑树算法详细介绍

  • 相关阅读:
    一个简单的PHP登录演示(SESSION版 与 COOKIE版)
    web系统之session劫持解决
    CKFinder 1.4.3 任意文件上传漏洞
    linux服务器磁盘扩容的方法
    Linux下lvm在线扩容步骤
    Centos7使用LVM扩容磁盘(测试成功)
    CentOS7下利用init.d启动脚本实现tomcat开机自启动
    Linux tomcat安装详解(未完)
    linux下 目录(扩容)挂载磁盘
    Linux下环境变量设置
  • 原文地址:https://www.cnblogs.com/xzxl/p/9572716.html
Copyright © 2020-2023  润新知