Estoy buscando un algoritmo de árbol de intervalos similar al árbol de intervalos rojo-negro en CLR, pero que admite la fusión de intervalos de forma predeterminada para que nunca haya intervalos superpuestos.Algoritmo de árbol de intervalo que admite la fusión de intervalos sin superposición
En otras palabras, si tiene un árbol que contiene dos intervalos [2,3] y [5,6] y ha agregado el intervalo [4,4], el resultado sería un árbol que contiene solo un intervalo [2, 6].
Gracias
Actualización: el caso de uso que estoy considerando es el cálculo de cierre transitivo. Los conjuntos de intervalos se utilizan para almacenar los conjuntos sucesores porque han sido found to be quite compact. Pero si representas conjuntos de intervalos como una lista vinculada, he descubierto que en algunas situaciones pueden llegar a ser bastante grandes y, por lo tanto, también lo hace el tiempo requerido para encontrar el punto de inserción. De ahí mi interés en los árboles de intervalo. También puede haber una gran cantidad de fusión de un árbol con otro (es decir, una operación O establecida): si ambos árboles son grandes, entonces puede ser mejor crear un nuevo árbol utilizando caminatas inorder de ambos árboles en lugar de inserciones repetidas de cada intervalo.
He borrado mi respuesta porque pasé por alto estúpidamente algunos casos. Aún era posible solucionarlo, pero se volvería mucho más complicado. De todos modos, dado que lo actualizaste para decir que en general estarás fusionando árboles enteros, la respuesta ya no parece útil, ya que el recorrido en orden será más rápido. – interjay
Oh, está bien. A veces fusionaré dos árboles grandes cuando inorder probablemente sea más rápido, pero con mayor frecuencia agregaré un árbol pequeño a un árbol grande. –