Comprensión profunda de los árboles rojo-negros
O(h = log2 n)
Ningún camino es el doble de largo que cualquier otro camino.
2. Puntero nulo; ganglio linfático centinela T.nil
Ganglio centinela/ganglio foliar/ganglio externo
Altura negra: a partir de X (excluyendo X y Hojas)
(2) Raíces negras
③(t. nulo) Hojas negras.
(4) Ambos nodos secundarios de un nodo rojo son negros = gt No puedes conectar dos nodos rojos.
(5) En la ruta simple desde cada nodo a todos sus nodos hoja descendientes, el número de nodos negros es el mismo.
El número de capas negras sigue siendo el mismo antes y después del cambio/rotación de color.
Conecta la altura con la altura del negro
Recuerda el pensamiento zurdo
Recuerda el punto 4.
Z: el puntero del nodo insertado, Z finalmente reemplaza la posición de un determinado T.nil
Recuerde rb_transplantation
1. Z
2.y permanece como
(1) z = >y (como máximo) tiene solo 1 hijo (izquierdo o derecho)
(2) El sucesor de z = >; y (como máximo) tiene solo 1 par de hijos.
3.y_original_color registra el color de y antes de que cambie de color.
Y_original_color es negro.
Destruir Rojo y Negro ->Ajuste
4.x apunta al único hijo de y o T.nil
5.y red = gt cuando se elimina y O en movimiento, los atributos rojo y negro permanecen sin cambios.
6. Esto se reduce a dos tipos de eliminación/mover.
Recordar/comprender el diagrama de eliminación/migración
Si Y es negro (solo necesita ser restaurado) - gt; restaurar el parámetro Func del atributo rojo-negro: x fue eliminado .
1. Empuje y negro hacia X, y la X roja o negra original se convierte en roja y negra o doble negra.
El negro extra es para X y no se refleja en el color de X.
2. Elimine el exceso de negro
Deje que el puntero x represente negro adicional.
Negro/x adicional se mueve a lo largo del árbol hasta x == t.root.
O
Color=Rojo
Y x está tachado.
Sin embargo, mantén el puntero W apuntando al hermano de X cuando X es doble negro = gt no somos cero.
Cuando x es el hijo correcto, la gráfica se dibuja simétricamente.