我需要實現一個trie的迭代器。比方說,我有Trie迭代器,後綴排序
a
/\
b c
/\
d e
如果當前iterator.state =「ABD」,我想有iterator.next.state =「安倍」,那麼「交流」。在每個級別,節點按字典順序排序(例如,在級別2上,c
在b
之後)。這也應該發生在log(n)時間,其中n是節點的數量。
我能想到的一個解決方案是:考慮一個特殊情況,每個分支具有相同的高度。我認爲一個相當酷的實現是爲每個「級別」維護一棵平衡的樹。在詢問:「在abd之後跟隨什麼字符串」時,可以在與第三級關聯的樹中搜索大於「b」的第一個元素,給出「abe」。
但是,由於必須創建樹木,這可能不切實際。
不,它不應該。 – user1377000 2013-03-12 14:30:36
@NickVeys [標籤:家庭作業] - 「這個標籤是OBSOLETE,正在被刪除,請不要將此標籤添加到問題中。」 – Dukeling 2013-03-12 14:34:40
你如何實現每個trie節點?通常,一個層次中的節點已經排序,因爲每個節點只是一個指向下一個節點的數組,而每個數組的大小都是字母表。 – 2013-03-12 16:24:26