红黑树学习笔记

R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。

红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。

红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(logn),效率非常之高,被应用到JAVA中的TreeSet和TreeMap,JDK1.8后,HashMap也会用到红黑树,用于链地址法解决Hash冲突时,当链表超过8,便会将链表转为红黑树。

红黑树的左旋和右旋,如下图,是高度对称的,记这张图就比较好理解。

红黑树的插入操作

第一步: 将红黑树当作一颗二叉查找树,将节点插入

第二步:将插入的节点着色为"红色"

第三步: 通过一系列的旋转或着色等操作,使之重新成为一颗红黑树。

扫描二维码关注公众号,回复: 3457698 查看本文章

红黑树的删除操作

第一步:将红黑树当作一颗二叉查找树,将节点删除。

第二步:通过"旋转和重新着色"等一系列来修正该树,使之重新成为一棵红黑树。

当入门了,想深究还是得买本算法导论看看。

猜你喜欢

转载自blog.csdn.net/weixin_38785199/article/details/82956288