Trie树,俗称字典树,最早是应用于通讯录中人名的查找而设计的查找树。字典树的查找效率高,通过利用公共前缀来减少查询时间。Trie树的结构如下:
1 | const int num_chars = 28;//represent |
注:Trie树中只有当到达字符串末尾时(Trie树中存在这个字符串),data数据域才会有值。表示当前字符串存入当前Trie树,否则其他节点data指针为空。
Trie树的查找
按照目标字符串,一个字符一个字符的向下查找,直到节点为null或字符串全部遍历完
1 | bool search(const key& t){ |
Trie树的插入
向下查询到某个合适的位置,将data指针设置成新键的记录信息。若中途遇空,则必须将节点都插入。
1 | bool insert(const Record& new_data){ |
Trie树的删除
沿着路径找到相应data成员设置为null。若这个节点所有成员为null(分支和data)则删除这个节点。思路:利用递归或栈。