zoukankan      html  css  js  c++  java
  • 平衡搜索树

       ------------------------------------------------------读《算法》后感

    一直以来,对于红黑树都没有很好的理解,指导看了《算法》和上了coursera上的公开课,终于算是有了较好的理解,现写下来和大家分享

    前言:2-3查找树         

          虽然二叉搜索树已经很好的解决大多数搜索问题,但是在最坏的情况下的性能还是很差 (~N),为了保证查找的树的平衡。我们引入了3-结点(相较于二叉查找树中的2-结点),并据此构造出2-3查找树。其性质如下:

    Allow 1 or 2 keys per node.

          2-nodes: one key, two children.

          3-nodes: two keys, three children.

    Symmetric order. Inorder traversal yields keys in ascending order.

    Perfect balance. Every path from root to null link has same length.

     至于对于2-3树的查找,插入的查找都比较简单,可参考下面的图片

    imageimageimage

    图片引用自:http://algs4.cs.princeton.edu(以下所有图片均源于此)

    红黑二叉查找树                                      

    红黑二叉查找树的基本思想就是用标准的二叉查找树(完全由2-结点构成)和一些额外的信息(替换3-结点)来表示2-3树

    .1 替换3-结点

    image

    image

    红黑树的一种等价定义:

      . 红链接均为左链接

      . 没有任何一个结点同时和两条红链相连

      . 该树是完全黑色平衡的,即任意空连接到根结点的路径上的黑链接数量相同

    .2颜色表示

    image

    image

    .红黑树的查找与基本的二叉查找树的方法相同

    image

    .红黑树的表示

    image

    .3 旋转

        ..左旋转h的右链接(Orient a (temporarily) right-leaning red link to lean left.)

        1.将h的右子树指向x的左子树

        2.将x的左子树指向h

        3.将x的color变为h的color

        4.然后x的左子树(即为h的color)变为红色

    image

    image

    ..右旋转h的左链接

    1.将h的左子树指向x的右子树

    2.将x的右子树指向h

    3.将x的color变为h的color

    4.然后x的右子树(即为h的color)变为红色

    image

    image

    ..颜色转换:讲一个结点的两个红色子节点的颜色转换,同时将父节点的颜色由黑色转换成红色

    image

    .4 插入

      ..将树底部的2-结点插入新键

       image

       ..向一颗双键树(即一个3-结点)中插入新键

           …新键大于原树中的两个键

           …新键小于原树中的两个键

           …新建介入原树中的两个键

    image

    ..向树底部3-结点插入新结点

        …case 1:

    image

    image

       …case2:

    image

    …插入的代码实现

    image

    image

  • 相关阅读:
    mac的端口被占用
    php中的运算符、控制结构
    文档模式影响浏览器的渲染
    ubuntu 命令 tips 来自于 ubuntu中文论坛
    用好 Emacs 中的 register
    [转载] Rsync命令参数详解
    使用 python 遍历目录下的文件
    灵活的左移位( << )操作
    使用 iperf 测试两台机器间的最大带宽
    Emacs server 新启动方式 (仅在emacs daemon未启动时才启动daemon)
  • 原文地址:https://www.cnblogs.com/maverick-fu/p/4044656.html
Copyright © 2011-2022 走看看