Sto cercando un algoritmo ad albero di intervallo simile all'albero di intervallo rosso-nero in CLR ma che supporta l'unione di intervalli per impostazione predefinita in modo che non ci siano mai intervalli di sovrapposizione.Algoritmo ad albero intervallo che supporta la fusione di intervalli senza sovrapposizione
In altre parole se si avesse un albero contenente due intervalli [2,3] e [5,6] e si aggiungesse l'intervallo [4,4], il risultato sarebbe un albero contenente un solo intervallo [2, 6].
Grazie
Aggiornamento: il caso d'uso che sto considerando è il calcolo chiusura transitiva. I set di intervalli vengono utilizzati per memorizzare i set successivi perché sono stati found to be quite compact. Ma se rappresenti gli intervalli solo come elenco collegato, ho scoperto che in alcune situazioni possono diventare piuttosto grandi e quindi anche il tempo necessario per trovare il punto di inserimento. Da qui il mio interesse per gli alberi intervallati. Inoltre ci può essere un bel po 'di fusione di un albero con un altro (vale a dire un'operazione OR impostata) - se entrambi gli alberi sono grandi allora potrebbe essere meglio creare un nuovo albero usando le passeggiate in entrata di entrambi gli alberi piuttosto che gli inserimenti ripetuti di ogni intervallo.
Ho cancellato la mia risposta da quando ho stupidamente trascurato alcuni casi. Era ancora possibile risolvere, ma sarebbe diventato molto più complicato. Ad ogni modo, da quando hai aggiornato per dire che per lo più si uniranno interi alberi, la risposta non sembra più utile, poiché l'attraversamento in ordine sarà più veloce. – interjay
Oh ok. A volte unirò due grandi alberi quando inorder sarà probabilmente più veloce, ma più spesso aggiungerò un piccolo albero ad un grande albero. –