Trie树是一种实现字符串快速检索的多叉树结构。把一堆字符串压缩到树结构中构成Trie树,实现快速检索。
它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。
Trie树的题一般应用于“前缀检索”、“最大异或值”这类题。先把全部数据储存到Trie树中,再遍历每个数据,进行检索。
前缀检索
很简单的题。可以先把数据全部保存到Trie树中再检索,也可以边插入边判断。
最大异或值
涉及到位运算的题,可以把数字看成31位二进制数,再把每一位看成一个字符,转换为Trie树问题。
将每个数按二进制位从高到低保存到Trie树中,然后再遍历每个数i,检索出一条尽量每一个二进制位都与i相反的路径。
上个题目最大异或对的应用。我们发现,树中一条路径上的异或值等于这条路径的 起始点到根节点的异或值 异或上 终点到根节点的异或值。
用DFS求出每个节点到根节点的异或值,之后将它们压缩到Trie树中。之后就可以转换成最大异或对问题。