我需要实现一个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