Trie树|字典树(字符串排序)
2012-05-05 20:22
323 查看
Trie树|字典树(字符串排序) - Microgoogle - 博客园
Trie树又名字典树,从字面意思即可理解,这种树的结构像英文字典一样,相邻的单词一般前缀相同,之所以时间复杂度低,是因为其采用了以空间换取时间的策略。
下图为一个针对字符串排序的Trie树(我们假设在这里字符串都是小写字母),每个结点有26个分支,每个分支代表一个字母,结点存放的是从root节点到达此结点的路经上的字符组成的字符串。
将每个字符串插入到trie树中,到达特定的结尾节点时,在这个节点上进行标记,如插入"afb",第一个字母为a,沿着a往下,然后第二个字母为f,沿着f往下,第三个为b,沿着b往下,由于字符串最后一个字符为'\0',因而结束,不再往下了,然后在这个节点上标记afb.count++,即其个数增加1.
之后,通过前序遍历此树,即可得到字符串从小到大的顺序。
Trie树|字典树(字符串排序)
有时,我们会碰到对字符串的排序,若采用一些经典的排序算法,则时间复杂度一般为O(n*lgn),但若采用Trie树,则时间复杂度仅为O(n)。Trie树又名字典树,从字面意思即可理解,这种树的结构像英文字典一样,相邻的单词一般前缀相同,之所以时间复杂度低,是因为其采用了以空间换取时间的策略。
下图为一个针对字符串排序的Trie树(我们假设在这里字符串都是小写字母),每个结点有26个分支,每个分支代表一个字母,结点存放的是从root节点到达此结点的路经上的字符组成的字符串。
将每个字符串插入到trie树中,到达特定的结尾节点时,在这个节点上进行标记,如插入"afb",第一个字母为a,沿着a往下,然后第二个字母为f,沿着f往下,第三个为b,沿着b往下,由于字符串最后一个字符为'\0',因而结束,不再往下了,然后在这个节点上标记afb.count++,即其个数增加1.
之后,通过前序遍历此树,即可得到字符串从小到大的顺序。
相关文章推荐
- Trie树|字典树(字符串排序)
- Trie树|字典树(字符串排序)
- Trie树|字典树(字符串排序)
- Trie树|字典树(字符串排序)
- Trie树|字典树(字符串排序)
- [转载]Trie树|字典树(字符串排序)
- Trie树|字典树(字符串排序)
- Trie树_字典树(字符串排序)简介及实现
- Trie树(字典树):应用于统计和排序
- 字符串--Trie树(字典树)
- Codeforces 557E Ann and Half-Palindrome (字典树+字符串排序)
- English Game 字典树排序 字符串处理
- NEU1007: English Game 字典树排序 字符串处理
- POJ2418 Hardwood Species(字典树+字符串排序)
- 字典树-大量字符串前缀及出现次数是否存在统计(Trie树-java)算法实现
- hdu 1800 字符串水题 可用字符串hash 字典树做 我用了最水的排序水过
- JAVA基础算法——将字符串按照字典倒序排序并输出
- C++利用指针数组和快排对输入的字符串进行排序
- Trie树的编程实现,用于计算字符串出现次数,求公共前缀字符串等问题
- 关于SQL查询的字符串类型字段的排序问题