(引用)https://studygolang.com/articles/7014 树的旋转包括左旋和右旋,下面图解说明 左旋:以P为轴心左旋,N原来的父节点P作为N节点的左孩子,原N节点的左孩子变为P节点的右孩子,左旋就完成了。 右旋:与左旋类似,只是把N节点的右孩子变为了P节点的左孩子。 需几点 ...
分类:
编程语言 时间:
2017-10-25 21:30:09
阅读次数:
153
在本系列的前面两篇文章中,已经介绍了红黑树以及其插入操作。具体可参考下面两个链接:
红黑树(1) - 介绍
红黑树(2) - 插入操作
1.删除操作介绍
类似于插入操作,红黑树进行删除节点时,也使用重新着色以及旋转这两种方式,来维护它的属性。在插入操作中,我们主要是依靠检测叔节点的颜色来决定哪种场景。在删除操作中,我们使用检测兄弟的颜色,来决定是哪种场景。
在插入操作中,最常见的违反...
分类:
其他好文 时间:
2015-07-12 00:22:30
阅读次数:
140
1.插入介绍
首先以二叉排序树的方法增加节点并标记它为红色。(为何不是红色?因为如果设为黑色,就会导致根到叶子的所有路径中,有一条路径上会多出一个额外的黑节点,这个是很难调整的)。但是,设为红色节点后,可能会导致出现两个连续红色节点的冲突,则可以通过重新着色和旋转来调整。具体的调整操作取决于其他临近节点的颜色。
下面分析一下插入新节点后可能对红黑树性质产生的影响:
性质1-节点是红色或黑...
分类:
其他好文 时间:
2015-07-09 06:19:47
阅读次数:
125
二叉查找树的基本操作包括搜索、插入、删除、取最大和最小值等都能够在O(h)时间复杂度内实现,因此能在期望时间O(lgn)下实现,但是二叉查找树的平衡性在这些操作中并没有得到维护,因此其高度可能会变得很高,当其高度较高时,而二叉查找树的性能就未必比链表好了,所以二叉查找树的集合操作是期望时间O(lgn),最坏情况下为O(n)。
红黑树也是一种二叉查找树,它拥有二叉查找树的性质,同时红黑树还...
分类:
其他好文 时间:
2014-08-28 00:58:48
阅读次数:
314
算法导论读书笔记(13)目录红黑树旋转插入情况1 : z 的叔父结点 y 是红色的情况2 :
z 的叔父结点 y 是黑色的,而且 z 是右孩子情况3 : z 的叔父结点 y 是黑色的,而且 z 是左孩子删除情况1 : x 的兄弟 w 是红色的情况2 :
x 的兄弟 w 是黑色的,且 w 的两个孩子都...
分类:
其他好文 时间:
2014-05-21 17:22:47
阅读次数:
451