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

    概念

    红黑树是AVL树的变种,具体定义如下:红黑树也是一棵二叉查找树,要满足一下性质

    (1)每个节点或者是黑色,或者是红色。

    (2)根节点是黑色。

    (3)每个叶子节点(NIL)是黑色。

    (4)如果一个节点是红色的,则它的子节点必须是黑色的。

    (5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。


    定义:从某个节点x出发(不包括该节点)到达一个叶节点的任意一条路径上,黑色节点的个数称为该节点的黑高度,记为bh(x)

    红黑树的黑高度定义为bh(root).

    1  证明: 根到任一个叶子的最短可能的路径上全是黑节点, 而最长路径根据性质3最坏的情况就是红黑节点交替,而又根据性质4 最长和最短路径上的黑节点数目相同,

    则最长路径的长度应小于或等于最短路径的2倍

    引理:

    定义:从某个节点x出发(不包括该节点)到达一个叶节点的任意一条路径上,黑色节点的个数称为该节点的黑高度,记为bh(x)

    红黑树的黑高度定义为bh(root).

    2   定理:一棵含有n个节点的红黑树的高度至多为2log(n+1).

    原题等价于證明node x底下的subtree最少有2^bh(x)-1   internal node <=>bh(x)=log(n+1),

    对于高度为h的红黑树,它的包含的内节点个数至少为 2^{h/2}-1个,因为bh(x)>=h/2,

    所以只要证明 它包含的内节点的个数至少为2^bh(x)-1个。

    数学归纳法证明,

    对于h=0,则内节点个数是0显然成立;

    假設當x的height為正整數, 且是一個有兩個children的internal node. 每個小孩的black height為bh(x) or bh(x)‐1. (看
    該小孩是黑是紅),假設小孩的subtree都至少有2^(bh(x)-1)-1個internal node

    对于节点x,其黑高度为bh(x),则其左右子树的黑高度为 bh(x) 或者 bh(x)-1,但是高度减少至少1,节点至少为 2*(2^(bh(x)-1)-1)+1=2^bh(x)-1个. 结论得证


    http://www.csie.ntu.edu.tw/~hsinmu/courses/lib/exe/fetch.php?media=dsa1_10fall:lecture15.pdf


  • 相关阅读:
    BZOJ 1899: [Zjoi2004]Lunch 午餐
    BZOJ3670: [Noi2014]动物园
    BZOJ3712: [PA2014]Fiolki
    BZOJ1057: [ZJOI2007]棋盘制作
    BZOJ4326: NOIP2015 运输计划
    BZOJ4721: [Noip2016]蚯蚓
    BZOJ1131: [POI2008]Sta
    BZOJ1856: [Scoi2010]字符串
    BZOJ4003: [JLOI2015]城池攻占
    [AH2017/HNOI2017]单旋
  • 原文地址:https://www.cnblogs.com/catkins/p/5270706.html
Copyright © 2011-2022 走看看