zoukankan      html  css  js  c++  java
  • 红黑树

    1.基本概念:

     红黑树,一种二叉查找树,但在每个节点上增加一个存储位表示节点的颜色,红色或者黑色,通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长处两倍,因而接近是平衡的。

    2.特性:

    (1)红黑树是一颗二叉查找树,执行查找,插入,删除等操作的时间复杂度为O(lgn)

    (2)如果一颗具有n个节点的线性链,那么二叉查找树的最坏情况时间O(n),而红黑树能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn)。

    红黑树的特点:

     1).每个节点要么是红的,要么是黑的。

     2).根节点时黑的。

     3).每个叶子节点,即空节点(NIL)是黑的。

     4).如果一个节点时红的,那么它的两个儿子都是黑的。

     5).对每个节点,从该节点到其子孙节点的所有路径上包含相同数目的黑节点。

    3.树的旋转

    前景:当我们对红黑树进行插入和删除等操作时,对树做了修改,可能会违背红黑树的性质,为了保持红黑树的性质,我们可以通过对树进行旋转,即修改树种某些节点的颜色及指针结构,以达到红黑树进行插入,删除等操作,红黑树依然能保持它特有的性质。

    3.1 左旋:

      

    1).如果x的父节点是空节点,则将y设为根节点;

    2).如果x是它父节点的左孩子,则将y设为“x的父节点的左孩子”;

    3).如果x是它父节点的右孩子,将y设为“x的父节点的右孩子”;

    将x设为y的左孩子,

    将x的父节点设为y

    3.2右旋

      

    对Y进行右旋,意味着“将Y变成一个右节点”

    如果“y的父亲”是一个空节点,则将X设为根节点;

    如果y是它父节点的右孩子,则将x设为“y的父节点的右孩子”

    如果y是它父节点的左孩子,将x设为“y的父节点的左孩子”

    将y设为x的右孩子,

    将y的父节点设为x

    原文参考:http://www.cnblogs.com/v-July-v/archive/2010/12/29/1983707.html

           http://www.cnblogs.com/skywang12345/p/3245399.html

  • 相关阅读:
    Powershell数据处理
    Powershell About Active Directory Group Membership of a domain user
    Powershell About Active Directory Server
    Oracle Schema Objects——Tables——TableStorage
    Oracle Schema Objects——Tables——TableType
    English Grammar
    Oracle Database Documentation
    Oracle Schema Objects——Tables——Oracle Data Types
    Oracle Schema Objects——Tables——Overview of Tables
    What is Grammar?
  • 原文地址:https://www.cnblogs.com/Wanted-Tao/p/7647263.html
Copyright © 2011-2022 走看看