Ich suche nach einem Intervallbaumalgorithmus ähnlich dem Rot-Schwarz-Intervallbaum in CLR, der jedoch das Zusammenführen von Intervallen standardmäßig unterstützt, so dass es nie überlappende Intervalle gibt.Intervallbaum-Algorithmus, der das Zusammenführen von Intervallen ohne Überlappung unterstützt
Mit anderen Worten, wenn Sie einen Baum mit zwei Intervallen [2,3] und [5,6] hätten und das Intervall [4,4] hinzugefügt hätten, wäre das Ergebnis ein Baum mit nur einem Intervall [2, 6].
Dank
Update: die Verwendung Fall, den ich habe, ist, transitiven Abschluss der Berechnung berücksichtigen. Intervallsätze werden verwendet, um die Nachfolgesätze zu speichern, da sie found to be quite compact sind. Aber wenn Sie Intervall-Sets nur als verkettete Liste darstellen, habe ich festgestellt, dass sie in einigen Situationen ziemlich groß werden können und damit auch die Zeit, die für die Suche nach dem Einfügepunkt benötigt wird. Daher mein Interesse an Intervallbäumen. Es kann auch eine Menge an Verschmelzen eines Baums mit einem anderen (d. H. Eine Satz-ODER-Operation) geben. Wenn beide Bäume groß sind, kann es besser sein, einen neuen Baum zu erzeugen, indem Zwischenreihen beider Bäume statt wiederholter Einfügungen jedes Intervalls verwendet werden.
Ich habe meine Antwort gelöscht, da ich dummerweise einige Fälle übersehen habe. Es war immer noch möglich zu beheben, würde aber viel komplizierter werden. Wie auch immer, seit Sie aktualisiert haben, um zu sagen, dass Sie hauptsächlich ganze Bäume zusammenführen werden, scheint die Antwort nicht mehr nützlich zu sein, da das In-Order-Traversal schneller sein wird. – interjay
Oh ok. Manchmal füge ich zwei große Bäume zusammen, wenn die Reihenfolge wahrscheinlich schneller ist, aber öfter werde ich einen kleinen Baum zu einem großen Baum hinzufügen. –