一.删除节点的颜色 二.删除节点的构造 颜色上,节点有红黑两种可能,那么删除黑节点就会造成节点失衡。 构造上,节点会有三种可能:其一是删除节点的孩子都为Nil,其二是删除节点的一个孩子节点为Nil,其三是删除节点的两个孩子节点都不为Nil。而如果两个节点都不为Nil,那么我们就需要找替代节点(后继结点)来替代删除,而...
我们将要删除的节点称为目标节点,我们删除了这个节点就需要有节点补到被删除节点的位置(叶子节点除外)。 我们默认使用目标节点的右子树中的最小节点(替代节点)去覆盖目标节点(当然也可以使用左子树最大节点),而我们只需要在覆盖完成后删除替代节点即可。现在问题简化为删除叶子节点(因为子树的最小节点一定是叶子节点)。
一、从树中删除节点X(以寻找后继节点的方式进行删除) 情况①:如果X没有孩子,且如果X是红色,直接删除X;如果X是黑色,则以X为当前节点进行旋转调色,最后删掉X 情况②:如果X只有一个孩子C,交换X和C的数值,再对新X进行删除。根据红黑树特性,此时X不可能为红色,因为红色节点要么没有孩子,要么有两个黑孩子。此时...
1、节点的删除 假如要删除的节点为z,这时,有三种情况: 1)节点z没有孩子节点,这时直接将z节点删除,然后判断节点z是否为黑色的,若z为黑色的,则在删除后会导致黑高不相等。于是需要对红黑树进行调整,见第二部分。 2)节点z只有一个孩子节点,此时直接使用其孩子节点代替z节点,然后判断删除的z节点是否为黑,若为黑...
就像插入新节点一样,删除某个黑节点之后(红的无所谓),我们必须对整棵树的结构进行相应的调整。至于如何调整,接着往下看。 一个小例子 我们先看一个例子吧,比如说下面这棵红黑树: 我们要依次删掉 1、3、5、13、10 这几个节点。下面我们来看过程—— ...
我们这里只实现红黑树的插入和删除,了解他们的底层即可,而后面我们在介绍map以及set的模拟实现的时候,我们就会进一步将红黑树进行改造! Ⅱ. 红黑树的概念 红黑树是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制...
首先需要知道红黑树的5个性质: 1. 节点是红色或黑色;2. 根节点是黑色;3. 所有叶子节点都是黑色;(叶子是NULL节点)4. 每个红色节点的两个子节点都是黑色;(从每个...
红黑树学习笔记(3)-删除操作 1、设删除的节点为$z$,另外定义节点$x,y$如下: $y=\left\{\begin{matrix}z & z的左孩子或右孩子为空节点\\ Successor(z) & otherwise\end{matrix}\right.$ $x=\left\{\begin{matrix}y.left & y的左孩子不为空\\ y.right & otherwise\end{matrix}\right.$...
红黑树删除操作也分为两步: 定位删除的位置 定位删除位置可以复用红黑树搜索的操作。 如果不存在目标结点,忽略本次操作;如果找到目标结点,删除后进行自平衡处理。 删除后实现自平衡 二叉搜索树删除的时候可能出现三种场景: 若删除结点无子结点,直接删除即可。