¿Qué es un árbol RB y cómo se implementa?

Los árboles RB o los árboles rojo-negros son una especie de árbol de búsqueda binaria autobalanceado . O (log n) es el tiempo de ejecución para todas las operaciones básicas como: inserción, eliminación, etc.

No hay mucho que decir sobre los árboles RB como una descripción general en lugar de su mecánica / implementación; pero aquí hay alguna información: generalmente se compara con los árboles AVL, aunque hay algunas similitudes, difieren en cómo se comportan los árboles RB. Los elementos en un árbol Rojo-Negro están marcados como rojo / negro. La inserción y las eliminaciones dependen de los colores, en lugar de solo los valores de cada nodo.

Estas son las propiedades de un árbol rojo-negro:

1) Cada nodo está marcado en rojo o negro .

2) El nodo raíz del árbol siempre es negro .

3) Un nodo rojo no puede tener un padre rojo o un hijo rojo .

4) Cada ruta desde el nodo raíz a un nodo NULL / NIL tiene el mismo número de nodos negros .

La inserción y eliminación varían tanto para árboles rojo-negros como para árboles AVL. La búsqueda es la misma en mecánica pero ligeramente diferente en tiempo de ejecución.

Estas son algunas de las referencias que podría darle, ya que estos sitios pueden brindarle detalles más completos sobre cómo se implementan y por qué son útiles: (no se pudo presentar la información muy extensa aquí en Quora, ya que se explica mejor con las ilustraciones proporcionadas a continuación)

¿Qué es un árbol rojo-negro? Árbol rojo-negro | Set 1 (Introducción) – GeeksforGeeks

Inserción de árbol rojo-negro: Árbol rojo-negro | Conjunto 2 (Insertar) – GeeksforGeeks

Eliminación del árbol rojo-negro: Árbol rojo-negro | Conjunto 3 (Eliminar) – GeeksforGeeks

More Interesting

Como desarrollador web full stack con 1 año de experiencia, ¿sería beneficioso para mí aprender algoritmo y estructura de datos?

¿Cuál es el algoritmo más difícil que has implementado? ¿Por qué fue difícil? ¿Cuánto tiempo te llevó?

¿Cuántas veces se realiza la comparación [código] i> = n [/ código] en el siguiente programa? [código] int i = 200, n = 110; main () {while (i> = n) {i = i-1; n = n + 1;}} [/ código]

¿Cómo se puede usar la máquina épsilon para realizar cálculos precisos de coma flotante?

¿Las estructuras de datos y los algoritmos son tan importantes para convertirse en un buen programador?

¿Cuántos casos hay para reequilibrar los árboles AVL?

¿Es la incapacidad de implementar estructuras de datos básicas como una lista doblemente enlazada, un árbol con punteros primarios usando un código seguro la mayor debilidad de Rust?

¿Qué es una matriz ordenada y en qué se diferencia de una que no está ordenada?

Un problema importante con los algoritmos de programación prioritarios es el bloqueo indefinido o la inanición. ¿Puede explicar el concepto de inanición y cómo a menudo se resuelve en la programación de prioridades?

¿Has visto algún trabajo hacia el cierre transitivo de la alineación de secuencias y las matrices de sustitución?

¿Cuál es el programa de clasificación rápida que tiene su mediana como pivote?

Cómo determinar si un DAG tiene una ruta con una longitud mayor que k

¿Cuáles son los conceptos básicos de cifrado y criptografía?

¿Existe un algoritmo borroso que replica la miopía?

¿Por qué no se utilizan algoritmos genéticos?