红黑树

Posted ccpang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红黑树相关的知识,希望对你有一定的参考价值。

技术图片

 

 

 技术图片

 

 

 

技术图片

 

 

 

技术图片

 

 

 问题:

  能否进一步提高,比如总体O(n+h)、单版本O(1)? 答案是可以!!


 

相邻的版本之间的差异不能超过O(1),显然AVL树的删除操作不能满足这一点,因为当每次删除一个节点后,有可能自底而上,逐层引发多大logN次的旋转。

技术图片

技术图片

 

 

 

所以要用到红黑树:

 


 红黑树所具有的规则:技术图片

 

 

技术图片

 

 对红色节点做一次提升变换:

技术图片

 

 

  技术图片底层节点:

 

 

技术图片在经过提升之后:

 

  技术图片

 

 原来提升之后的红黑树就是4阶B树啊!!!

 技术图片

 

 

技术图片

 


 

 红黑树接口定义:  

  技术图片

技术图片

 

技术图片

 


 

红黑树的动态调整算法:

  插入:

技术图片

 

 技术图片

 

 

技术图片

 

 

双红修正算法:

  第一种情况:叔父节点u是黑色的

  技术图片

 

 

技术图片

 

 

 第二种情况:叔父节点u是红色的

  技术图片

 

 需要在出现问题的节点中,找到居中的那个关键码,并且以他为界,将原先的大节点分为左右两个新的节点。居中分界的关键码,将被取出上移插入父节点的位置中。

  技术图片

 

以上是关于红黑树的主要内容,如果未能解决你的问题,请参考以下文章

数据结构~基础2~树《二叉树二叉搜索树AVL树B树红黑树》的设计~红黑树

二叉树红黑树以及Golang实现红黑树

二叉树红黑树HashB+树

红黑树平衡二叉查找树

红黑树平衡二叉查找树

二叉排序树红黑树AVL树散列表