红黑树大白话详解

来源:互联网 发布:js特效比较好的网站 编辑:程序博客网 时间:2024/06/17 19:14

由于csdn博客的排版实在是太过麻烦,调来调去的也不好看,故使用线下已经排好的截图来发表

前言:

红黑树是在二叉搜索树的基础上添加了对颜色的处理,故如对二叉树不熟悉的可以先了解上一篇对二叉树的介绍http://blog.csdn.net/a_zhenzhen/article/details/78829892

设红黑树的高为h,则树的黑高最小为h/2; n为红黑树的结点数,则
n >= 2^(h/2)-1
即 n + 1 >= 2^(h/2) -------> lg(n+1)>=h/2 即 h<= 2lg(n+1)

左旋与右旋


左旋伪代码

右旋伪代码

红黑树需要满足的性质

  1. 每个结点或是红色的,或是黑色的
  2. 根结点是黑色的
  3. 每个叶子结点(NIL)都是黑色的
  4. 如果一个结点是红色的,则它的两个子结点都是黑色的。
  5. 对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。
红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡的

红黑树的插入






红黑树插入的伪代码




红黑树的删除



红黑树删除的伪代码








红黑树修复的伪代码



原创粉丝点击