Trie树趣味实例
如果一个单词,将其字母顺序重新排列可以生成另一个单词,则称这两个单词是兄弟单词。
如:”mary“ & ”army“
“cinema”&“iceman”
现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有哪些兄弟单词?要求时间和空间效率尽可能的高。
解决思路:
利用Trie树就可以妥善解决。
只需将上面的树节点增加一个vector< string >,构建树的时候,将每个单词在插入树之前先按字母序排序,如插入mary,先将mary变为:amry然后插入Trie树中,在到达最后一个字母节点时,在节点中的vector中存入mary即可。同理,如果插入army,也先将它排序变为amry,然后插入树中,到达最后一个字母节点时(和mary同一节点),将army也添加进vector中即可。
当用户查询单词时,先将用户输入的单词按字母序重排,然后查找Trie树,到达最后一个字母节点时只需变量vector并打印出所有的单词即可。
(当然还有其他方法,如hash_map等)