Hay dos métodos básicos:
De abajo hacia arriba : busque el nodo hoja apropiado y agregue su entrada. Si esto hace que el nodo se desborde, divídalo en dos y empuje la entrada central hacia el padre del nodo. Continúe recurriendo hacia arriba hasta que la inserción en un padre no cause desbordamiento (o haya creado una nueva raíz).
Arriba hacia abajo Recorre el árbol hacia el nodo de hoja apropiado. Si un nodo secundario está lleno, divídalo antes de continuar por el camino.
- Solo conozco algunos conceptos básicos de c ++. ¿Qué libros o tutoriales debo consultar para resolver problemas en spoj y codechef?
- ¿Cuál es el valor de la suma k ^ 2 * C (n, k) 0 a n?
- ¿Cuál es el algoritmo más genial (programación competitiva) que hayas encontrado?
- Cómo escribir un algoritmo para un programa complicado que tiene muchos bucles, conmutadores y otros procesos dentro de una instrucción if
- Cómo construir un algoritmo automatizado de comercio de acciones utilizando mis estrategias sin tener que contratar un programador
En el último método, si el nodo hoja no estaba lleno, el resultado sería una serie de divisiones innecesarias. Sin embargo, no es necesario bloquear todo el árbol hasta que finalice la inserción. Una vez que haya atravesado un nodo hijo, el padre puede desbloquearse para que otros usuarios puedan realizar inserciones simultáneamente en otras partes del árbol.
En cuanto a los enlaces a algún código, mi favorito es B-Tree | Conjunto 1 (Introducción) – GeeksforGeeks. La codificación es C ++ pero se convierte fácilmente en C.