• 红黑树


    红黑树的来历

    红黑树(Cormen, 2001)是一个平衡二叉树的高效实现。
    是一种特殊的二叉查找树,自平衡二叉查找树,为了防止二叉查找树退化成链表的情况。
    相对于AVL树(完美平衡二叉树),是一种平衡二叉树,它追求极致的平衡。

    二叉查找树定义

    根节点左边的值都小于根节点的值,右边的值都大于根节点的值。

    红黑树的性质

    红黑树是一种含有红黑结点并能自平衡的二叉查找树。它必须满足下面性质:

    1. 每个节点不是红色就是黑色;
    2. 根节点都是黑色;
    3. 每个叶子节点(NIL)是黑色;叶子节点都是黑色:出度为0满足了性质就可以近似于平衡。
    4. 每个红色结点的两个子结点一定都是黑色。即:不可能有连在一起的红色节点;
    5. 任意一结点到每个叶子结点的路径都包含数量相同的黑结点。
      从性质5又可以推出:如果一个结点存在黑子结点,那么该结点肯定有两个子结点。

    红黑树的查找

    因为红黑树是一颗二叉平衡树,并且查找不会破坏树的平衡,所以查找跟二叉平衡树的查找无异:

    从根结点开始查找,把根结点设置为当前结点;
    若当前结点为空,返回null;
    若当前结点不为空,用当前结点的key跟查找key作比较;
    若当前结点key等于查找key,那么该key就是查找目标,返回当前结点;
    若当前结点key大于查找key,把当前结点的左子结点设置为当前结点,重复步骤2;
    若当前结点key小于查找key,把当前结点的右子结点设置为当前结点,重复步骤2;

    深入学习

    红黑树怎么自平衡?什么时候需要左旋或右旋?插入和删除破坏了树的平衡后怎么处理?

  • 相关阅读:
    OpenERP 7.0 中文报表PDF乱码(WindowsXP)
    【转】CentOS 6.3 X64自动安装OpenERP 7.0脚本
    OE7设置菜单为什么这么少?
    PostgreSQL的备份和恢复
    PyPI镜像网站
    【转】Win 7 下源码运行OpenERP7.0
    OpenERP中的会计凭证
    OpenERP实施记录(14):收款处理
    OpenERP实施记录(13):出库处理
    intro.js 页面引导简单用法
  • 原文地址:https://www.cnblogs.com/aworkstory/p/13208633.html
Copyright © 2020-2023  润新知