Muchas estructuras de árbol equilibradas (árboles rojos / negros, árboles de separación, etc.) y algunas otras estructuras de diccionario ordenadas (listas de omisión) admiten una operación de unión que incluye dos diccionarios donde todas las claves de la primera estructura son menores que todas las claves del segundo, luego combina los dos diccionarios en un solo diccionario ordenado en el tiempo , donde n es el número total de claves. Sin embargo, esto solo funciona si no hay superposición en los rangos de claves almacenadas en esos árboles.
Del mismo modo, muchas colas prioritarias (montones binomiales, montones de Fibonacci, etc.) admiten fusiones de tiempo . Estas fusiones funcionan independientemente de las claves almacenadas, pero dado que las estructuras de datos son colas de prioridad, no podemos buscar elementos aleatorios en la estructura resultante.
¿Existe una estructura de diccionario ordenada que admita fusiones de diccionarios arbitrarios en el tiempo al tiempo que admite operaciones de diccionario ordenadas normales (inserciones, eliminaciones, búsquedas, consultas de sucesor / predecesor, etc.) en el tiempo O ( log n ) , o ¿Una prueba de límite inferior de que tales estructuras no pueden existir?
fuente
Respuestas:
Ahora, suponga que desea admitir inserciones, fusiones destructivas y búsquedas. Para las inserciones y búsquedas, solo use las operaciones de árbol de búsqueda existentes. Para una fusión, siempre combine el árbol más pequeño en el más grande, y use un recorrido transversal del árbol más pequeño para obtener su orden ordenado en tiempo lineal. Luego, inserte los elementos del árbol más pequeño uno a la vez en el árbol más grande en este orden ordenado.
fuente