El árbol B fue propuesto por primera vez por el informático alemán Rudolf Bayer y otros en el artículo de 1972 "Organización y mantenimiento de grandes índices ordenados", pero creo que después de leer el original. En el texto, descubrí que el autor no explicó por qué se llama árbol B, por lo que simplemente interpreté la B del árbol B como equilibrada o binaria, lo cual no es particularmente riguroso. Quizás el nombre del autor proviene de las iniciales de Bayer...
2. ¿Cómo es un árbol B?
Mira la imagen directamente para mayor claridad. Como se muestra en la figura, el árbol B es en realidad un árbol de búsqueda equilibrado de múltiples ramas, es decir, cuando M >, se pueden abrir M ramas (M > = 2), lo que llamamos árbol B de orden M. Para reflejar la conciencia de este blog, a diferencia de otros lugares donde se pueden ver árboles B de segundo orden, aquí dibujamos especialmente un árbol B de quinto orden.
En términos generales, un árbol B de orden M satisface las siguientes condiciones:
Cada nodo puede tener como máximo m subárboles.
El nodo raíz tiene al menos dos nodos (o en casos extremos, un árbol tiene un nodo raíz y los organismos unicelulares son raíces, hojas y árboles).
Los nodos que no son raíz ni hoja tienen al menos subárboles Ceil (m/2) (Ceil representa redondeo hacia arriba y cada nodo en el gráfico tiene al menos 3 subárboles, es decir, al menos 3 bifurcaciones). ).
La información en los nodos que no son hoja incluye [n, A0, K1, A1, K2, A2,..., KN, An], donde N representa el número de palabras clave guardadas en el nodo, y K es la palabra clave. Ki
La longitud de cada camino desde la raíz hasta las hojas es la misma, lo que significa que los nodos de las hojas están en la misma capa y estos nodos no tienen información. En efecto, estos nodos significan que no se puede encontrar el valor especificado, es decir, los punteros a estos nodos son nulos.
El proceso de consulta del árbol B es similar al árbol de clasificación binaria. Cada nodo se compara secuencialmente comenzando desde el nodo raíz. Dado que las claves en cada nodo y los subárboles izquierdo y derecho están ordenados, la clave especificada se puede encontrar rápidamente comparando las claves en el nodo o a lo largo del puntero. Si la búsqueda falla, se devolverá un nodo hoja, un puntero nulo.
Por ejemplo, busque k en el alfabeto de la figura.
A partir del nodo raíz P, la posición de K está antes de P y ingresa al puntero izquierdo.
En el subárbol izquierdo, compare C, F, J y M en secuencia y encuentre que K está entre J y M.
Continúe visitando el subárbol a lo largo del puntero entre j y m, compárelos en secuencia y descubra que la primera palabra clave k es el valor especificado para la búsqueda.
Versión 3. Plus - b-tree
Como versión mejorada de B-tree, la diferencia entre B-tree y B-tree es:
Los nodos de n subárboles contienen n palabras clave (algunas personas piensan que son n-1 palabras clave).
Todos los nodos hoja contienen todas las palabras clave y punteros a registros que contienen estas palabras clave. Los propios nodos hoja están conectados en orden de palabras clave de pequeño a grande.
Los nodos que no son hoja se pueden considerar como la parte del índice y el nodo solo contiene la palabra clave más grande (o más pequeña) en su subárbol (nodo raíz).
El proceso de búsqueda del árbol B es similar al árbol B, excepto que durante la búsqueda, si la clave en el nodo no hoja es igual al valor dado, no terminará, sino que continuará. el puntero hasta la ubicación del nodo hoja. Entonces, en el árbol B, no importa si la búsqueda es exitosa o no, cada búsqueda toma una ruta desde la raíz hasta el nodo hoja.