zoukankan      html  css  js  c++  java
  • 《算法导论》笔记 第13章 13.1 红黑树的性质

    【笔记】


    红黑树中每个结点包含五个域:color,key,left,right和p。

    如果某结点没有一个子结点或父结点,则该域指向NIL。

    我们把NIL视为二叉树的外结点(叶子),而带关键字的结点视为内结点。


    一棵二叉树如果满足下面的红黑性质,则为一棵红黑树:

    1) 每个结点或是红的,或是黑的。

    2) 根结点是黑的。

    3) 每个叶结点(NIL)是黑的。

    4) 如果一个结点是红的,则它的两个儿子都是黑的。

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


    采用哨兵来代表NIL,它的color域为BLACK,其它域为任意值。


    从某个结点x出发(不包括该结点)到达一个叶结点的任意一条路径上,黑色结点的个数称为该结点x的黑高度,用bh(x)表示。


    引理:一颗有n个内结点的红黑树的高度至多为2lg(n+1)。

    动态集合操作SEARCH、MINIMUM、MAXIMUM、SUCCESSOR和PREDECESSOR可用红黑树在O(lgn)时间内实现,因为这些操作在一棵高度为h的二叉查找树上的运行时间为O(h),而包含n个结点的红黑树又是高度为O(lgn)的查找树。


    【练习】


    13.1-1 画出在关键字集合{1,2,...,15}上高度为3的完全二叉查找树。以三种不同方式,向图中加入NIL叶结点并对各结点着色,是所得的红黑树的黑高度分别为2,3和4。





    13.1-2 画图出调用TREE-INSERT插入关键字36后的结果。如果插入的结点被标为红色,所得的树是否还是一棵红黑树?如果该节点被标为黑色呢?




    黑:不满足性质5)

    红:不满足性质4)


    13.1-3 定义松弛红黑树为满足红黑性质1,3,4和5的二叉查找树。换言之,根部可以是红色或是黑色。考虑一棵根是红色的松弛红黑树T。如果将T的根部标为黑色而其他都不变,则所得到的是否还是一颗红黑树?

    根部标为黑色,满足了性质2),没有破坏性质4),从根结点到子孙结点上的黑结点数不变性质5)不变。

    因此还是一颗红黑树。


    13.1-4 假设将一颗红黑树的每一个红结点吸收到它的黑色父结点中,来让红结点的子女变成黑色父结点的子女。当一个黑结点的所有红色子女都被吸收后,其可能的度是多少?此结果树的叶子深度怎样?

    不吸收:度为2

    吸收一个:度可能为3

    吸收两个:度可能为4

    叶子深度为红黑树黑高度。


    13.1-5 证明:在一棵红黑树中,从某结点x到其后代叶结点的所有简单路径中,最长的一条是最短一条的至多两倍。

    设最短路径为k个黑结点:●●●●

    由性质4没有连续两个红结点,性质5路径上黑结点数目相同,则最长路径:○●○●○●○●

    因此最长的一条是最短一条的至多两倍。


    13.1-6 在一棵高度为k的红黑树中,内结点最多可能有多少个?最少可能有多少个?

    易知,最多可能有2^2k-1

    最少可能有2^k-1


    13.1-7 请描述出一棵在n个关键字上构造出来的红黑树,使其中红的内结点数与黑的内结点数的比值最大。这个比值是多少?具有最小可能比例的树又是怎样?此比值是多少?

    黑红黑红交替。2:1。

    全黑最小。0




  • 相关阅读:
    设计数据库步骤
    sql练习题
    多表连接查询
    数据约束
    管理并行SQL执行的进程
    关于Oracle数据库后台进程
    配置数据库驻留连接池
    为共享服务器配置Oracle数据库
    关于数据库驻留连接池
    关于专用和共享服务器进程
  • 原文地址:https://www.cnblogs.com/cyendra/p/3681489.html
Copyright © 2011-2022 走看看