注意到k=10,利用这一点做优化
建立字典树时,让每个节点附带一个数组 std::list<std::string> suggestions,表示当前节点对应字符串输入的推荐字符串。
关键点是,在建立字典树完毕后、查询操作之前,就可以一次性将所有节点的suggestions列表给算出来
对于一个节点p,若p是叶子节点,则suggestions.push_back(p对应的字符串)就行了;否则,先让p的所有子节点执行一遍操作,然后把所有子节点的suggestions列表并在一起再排一次序取前k大作为该节点最终的suggestions列表。(其实这里有更高效的方法,不过直接无脑sort应该也行的)
查询阶段就好说了,路之前都已经铺好了