¿Por qué los árboles rojo-negros son más eficientes que los árboles AVL?

Prefacio

¿Por qué son tan populares los árboles rojos y negros? Todos deben saber muy bien que durante la entrevista, pase lo que pase, les preguntaré: ¿Qué es un árbol rojo-negro y por qué deberíamos usar un árbol rojo-negro? Es como si lo entendiera muy bien, como si conocer los árboles rojos y negros significara que es increíble.

Insertar descripción de la imagen aquí

Sea como sea, si todavía no comprendes los árboles rojo-negros, sin importar si tienes los conceptos básicos o no, espero que esta introducción pueda ayudarte a comprender los árboles rojo-negros más fácilmente.

La propuesta del árbol rojo-negro

Primero, ¿qué es un árbol rojo-negro? El árbol rojo-negro también es un árbol de búsqueda binario autoequilibrado. Si no conoce los conceptos básicos, puede consultar el artículo anterior para conocer la estructura de datos y el árbol AVL.

¿Por qué utilizar árboles rojo-negros? En comparación con los árboles AVL, los árboles rojo-negros son más eficientes. ¿Por qué?

Sabemos que el árbol AVL utiliza operaciones de rotación para garantizar que la diferencia de altura entre los subárboles izquierdo y derecho del nodo no sea mayor que 1 al insertar o eliminar un nodo, asegurando así el equilibrio del árbol. Sin embargo, el equilibrio del árbol AVL es relativamente estricto. Básicamente, cada vez que se agrega o elimina un nodo, se rotará. La rotación frecuente conducirá a una baja eficiencia. Por esta razón, se propuso el árbol rojo-negro.

Varias definiciones que todo el mundo conoce.

Creo que todos han visto las siguientes definiciones al aprender árboles rojo-negros:

  • Cada nodo debe ser rojo o negro.
  • El nodo raíz debe ser negro.
  • Todos los nudos de las hojas son negros.
  • Dos nodos rojos no pueden ser adyacentes. Si el nodo actual es rojo, el nodo secundario debe ser negro.
  • El número de nodos negros en el camino desde cualquier nodo a cada nodo hoja es el mismo.

Y espera.

Después de leer esta definición, ¿puedes entender por qué los árboles rojo-negros son más eficientes que los árboles AVL? No puedo entenderlo de todos modos, así que no te dejes influenciar por estas definiciones, y mucho menos memorice estas cosas.

También hay afirmaciones de que los árboles rojo-negro son esencialmente 2-3-4 árboles y los árboles rojo-negro usan caché. Yo personalmente no los entiendo.

Comprender la eficiencia de los árboles rojo-negros.

Para ser honesto, cuando entré por primera vez en contacto con los árboles rojo-negros, la definición me afectó por primera vez al principio. En segundo lugar, descubrí que el equilibrio también se mantiene girando hacia la izquierda y hacia la derecha. No se siente diferente de los árboles AVL. Por el contrario, es más complicado y más difícil de entender que los árboles AVL. Sin mencionar que el llamado "árbol rojo-negro es más eficiente que el árbol AVL".

¿Cómo entender que los árboles rojo-negros son más eficientes que los árboles AVL?

En comparación con el árbol AVL, el equilibrio del árbol rojo-negro es más flexible y no tan estricto, es decir, el número de rotaciones del árbol rojo-negro no será tan frecuente, por eso el árbol rojo-negro es más eficiente que el árbol AVL.

Entonces, ¿cómo reflejar el débil equilibrio de los árboles rojo-negros? ¿Por qué hay relativamente pocos giros? Centrémonos en las dos definiciones anteriores:

  1. Dos nodos rojos no pueden ser adyacentes. Si el nodo actual es rojo, el nodo secundario debe ser negro.
  2. El número de nodos negros en el camino desde cualquier nodo a cada nodo hoja es el mismo.

Estas dos definiciones significan que los nodos de la cadena más larga del árbol son rojos y negros, debido al punto 1 anterior. La cadena más corta son todos los nodos negros debido a los 2 anteriores.

Insertar descripción de la imagen aquí

Como puede ver en la imagen de arriba, la diferencia de longitud entre la cadena más larga (derecha) y la cadena más corta (izquierda) es 2: 4. Si inserta un nodo en el árbol de la derecha en este momento, girará para mantener el equilibrio. , Como se muestra abajo

Insertar descripción de la imagen aquí

Por lo tanto, se puede saber que la diferencia de longitud entre la cadena más larga y la cadena más corta del árbol rojo-negro no excederá el doble, por lo que su número de rotaciones es menor que el del árbol AVL y mantiene un relativamente Pierde equilibrio y eficiencia. También es más alto que el árbol AVL. Sin embargo, la complejidad general tanto de los árboles rojo-negro como de los árboles AVL es O (log n).

Resumir

  1. Se propusieron árboles rojo-negros para resolver la ineficiencia causada por la rotación frecuente de los árboles AVL.
  2. El equilibrio del árbol AVL depende de la diferencia de altura entre los subárboles izquierdo y derecho (no puede ser mayor que 1, relativamente estricto), y el equilibrio del árbol rojo-negro depende de la distribución de los nodos rojos y negros (difusos, sueltos). ).
  3. La eficiencia de los árboles rojo-negro es mayor que la de los árboles AVL, lo que se refleja en el hecho de que la diferencia de longitud entre la cadena más larga y la cadena más corta del árbol rojo-negro no excederá el doble.
  4. La complejidad general tanto de los árboles rojo-negro como de los árboles AVL es O (log n).

Supongo que te gusta

Origin blog.csdn.net/qq_28314431/article/details/133994523
Recomendado
Clasificación