标签:str bsp inux 步骤 eem set 后继节点 treemap nginx
红黑树是二叉查找树,红黑树的时间复杂度为: O(lgn)
红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)每个红色结点必须有两个黑色的子结点
(5)从任一节点到其每个叶子节点的所有路径都包含相同数目的黑色节点
红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高。
例如,Java集合中的TreeSet和TreeMap,C++ STL中的set、map,以及nginx、Linux虚拟内存的管理,都是通过红黑树去实现的。
在对红黑树进行添加或删除之后,红黑树就发生了变化,可能不满足红黑树的5条性质,也就不再是一颗红黑树了,而是一颗普通的树。而通过旋转,可以使这颗树重新成为红黑树。简单点说,旋转的目的是让树保持红黑树的特性。旋转包括两种:左旋 和 右旋。
旋转之后,仍然是二叉排序树
首先,将红黑树当作一颗二叉查找树,将节点插入;然后,将节点着色为红色;最后,通过旋转和重新着色等方法来修正该树,使之重新成为一颗红黑树。
详细步骤
3、删除
将红黑树内的某一个节点删除。需要执行的操作依次是:首先,将红黑树当作一颗二叉查找树,将该节点从二叉查找树中删除;然后,通过"旋转和重新着色"等一系列来修正该树,使之重新成为一棵红黑树。详细描述如下:
参考文章:
https://www.cnblogs.com/George1994/p/6903437.html
https://blog.csdn.net/sun_tttt/article/details/65445754
https://www.zhihu.com/question/20545708
标签:str bsp inux 步骤 eem set 后继节点 treemap nginx
原文地址:https://www.cnblogs.com/wangzhongqiu/p/8982790.html