zoukankan      html  css  js  c++  java
  • 【二叉树】红黑树入门与进阶(算法4)

    红黑树

    (全称:红黑二叉查找树)

    储备知识:你应该有二叉树、二叉查找树(BST)、2-3树的预备知识来学习本节。

    背后思想:将一个标准二叉查找树和一些额外的信息来表示2-3查找树

     我们看这张图,图中上部分是一个3节点 下面是一个有红、黑两种颜色的连接

    其中左斜红连接相当于 3节点 。

    红黑树满足条件:

    红链接均为左连接

    没有一个节点和两个红链接相连

    该树完美黑色平衡的,即任意空连接到根节点路径上的黑链接数量相等

    红黑树向2-3树的演变过程:我们看到就是红链接放平,然后将红链接的两个键 ,合并为3节点,就变成一个2-3树

    (反着看就是2-3树到红黑树的演变过程)

    我们规定,由父节点指向当前节点的连接的颜色 保存在Node数据变量color中

    例如下图:E黑色、C红色、J黑色、G红色

    旋转:

    有时候我们会遇到红链接是右连接怎么办?

    如下图,进行左旋转,进行左、右引用的变换 以及 color的重赋值

    右旋转同理

    虽然红黑树的红链接都是左连接,那么右旋转为啥还要有呢?原因是在进行标准化的时候有)

    一、向一个只有一个2节点的树插入节点

    (1)直接插入生成一个3节点后,变成红链接

     (2)插入3节点后,生成3节点,但红链接在右侧,需要左旋转进行红黑树的标准化

    二、向树底部的2节点插入新键

    (1)如果是新节点是父连接的左儿子节点,红链接在左面,不需要更多的操作

    (2)如果新节点是父连接的右儿子,则需要一次左旋转,如下图

    三、向一个只有一个3节点的树插入 的3种情况

     在第二种情况下,新键最小,会出现2条红链接,我们进行如下变换(将2个红链接变为黑,但将父节点的color变成红)

     四、向树的底部3节点插入

     总结:只要善于使用左旋转、右旋转、颜色变换 3个特性 就能保证红黑树与2-3树的一一对应关系。

  • 相关阅读:
    序列JSON数据和四种AJAX操作方式
    jquery.validate和jquery.form.js实现表单提交
    JQuery Validate使用总结1:
    HOWTO: Include Base64 Encoded Binary Image Data (data URI scheme) in Inline Cascading Style Sheets (CSS)(转)
    SharePoint 2007 使用4.0 .Net
    动态IP解决方案
    取MS CRM表单的URL
    从Iframe或新开的窗口访问MS CRM 2011(转)
    Toggle or Hidden MS CRM Tab
    Windows 2008下修改域用户密码
  • 原文地址:https://www.cnblogs.com/cckong/p/14296372.html
Copyright © 2011-2022 走看看