我正在尋找類似於CLR中的紅黑間隔樹的間隔樹算法,但默認情況下支持合併間隔,以便永遠不會有任何重疊間隔。支持間隔合併不重疊的區間樹算法
換句話說,如果你有一個包含兩個區間[2,3]和[5,6]的樹,並且你添加了區間[4,4],結果將是一棵只包含一個區間[2, 6]。
謝謝
更新:我正在考慮的用例是計算傳遞閉包。間隔集用於存儲後繼集,因爲它們是found to be quite compact。但是,如果將間隔集表示爲鏈表,我發現在某些情況下,它們可能變得相當大,因此找到插入點所需的時間也是如此。因此我對間隔樹感興趣。也可能有相當多的合併一棵樹與另一棵樹(即一組OR操作) - 如果兩棵樹都很大,那麼使用兩棵樹的中間行來創建一棵新樹可能會更好,而不是每個區間的重複插入。
我已經刪除了我的答案,因爲我愚蠢地忽略了一些情況。它仍然可以修復,但會變得更加複雜。無論如何,因爲你更新說,你將主要合併整個樹,答案似乎不再有用,因爲順序遍歷將更快。 – interjay 2010-04-09 12:08:32
噢,好的。有時我會合並兩棵大樹,當inorder可能會更快時,但更多的時候我會爲一棵大樹添加一棵小樹。 – 2010-04-09 13:15:55