前缀树也称字典树、单词查找树。
字典树是一种多叉树。
之前我学习的映射,本身也可以称为字典,只不过和我们现在要说的字典树Trie不同。下面对映射字典和字典树Trie做性能比较:
Trie的结构如图所示:
Trie的定义:
例如:每个节点有26个指向下个节点的指针。
不过这里的26并不是一定的,如果字母有大小写,就要改成52,如果有加入其他特殊字符,又是不同的。
应该考虑不同的语言,不同的情境。所以每个节点有若干指向下个节点的指针。此时即需要动态的实现。
此时运用上了映射数据结构。
简单描述Trie的查找过程:和之前学的二叉树不一样,Trie的查找,知道key要来查找value,在知道key,也可以说是要查找的位置或者路径的同时,就可以说是已经查找到了该value了。
所以此时把char c去掉完全没有问题。
例如要查找单词pan,在知道p位置之后,接着要查找a,再查找n,此时的n并不是叶子节点。而pan又是panda的前缀,所以说访问一个单词并不是一定要访问到叶子节点为止,所以需要定义一个变量来表示该字母是否代表一个单词的结尾。
isWord表示是否已经访问到了一个单词。