我需要为 trie 实现一个迭代器。假设我有
a
/\
b c
/\
d e
如果当前的iterator.state="abd",我想有iterator.next.state="abe",然后是"ac"。在每一层,节点按字典顺序排序(例如,在第 2 层,c
在 之后b
)。这也应该在 log(n) 时间内发生,其中 n 是节点数。
我能想到的一个解决方案是:考虑一个特殊情况,当每个分支具有相同的高度时。我认为一个相当酷的实现是为每个“级别”维护一个平衡的树。在询问:“abd 之后的字符串”时,当定位在 b 上时,可以在与第三级关联的树中搜索大于“b”的第一个元素,给出“abe”。
然而,由于必须创建树,这可能是不切实际的。